草庐IT

c++ - 在 C++ 中比较 char 和 Int

全部标签

Golang 奇怪的 big.Int 少量位数的行为

我正在尝试通过欧几里德方法计算两个数字的GCD,并注意到奇怪的行为。虽然我将数字的值传递给函数,但是对于位数较少(通常小于64)的数字,数字会被函数修改。谁能代表我澄清这是一个错误还是预期的行为?您可以在此处查看playground中的代码:Golangplaygroundexample我认为预期的行为是不应通过将值传递给我的函数来更改任何值。感谢您的帮助,在搜索的最后一天我找不到任何其他类似的事件。 最佳答案 big.Int是一个包含nat的结构,定义为typenat[]Word所以,虽然你确实在复制big.Int,但它里面的sl

go - Go 中的 int 数据类型

我是Go语言的新手,正在尝试GO中的几个示例。在GO中int不是关键字,所以我声明了一个名称为int的变量。packagemainimport"fmt"funcmain(){varintint=8fmt.Println(int)varnumberint=10fmt.Println(number)}现在,当我构建这段代码时,出现以下错误:[dev@gotest]$gobuildvariables.go#command-line-arguments./variables.go:8:intisnotatype我试图理解为什么会出现这种情况,以及varintint做了什么使得int成为不可用的

go - 检查值是否为 int

所以我将此有效负载发送到我的应用程序:{"name":"MatiasBarrios","age":123}我面临的问题是,当我测试name是否是一个字符串时,它工作得很好。但是无论我做什么,测试age是否为int总是返回false。ifgjson.Get(spec,"name").Exists(){if_,ok:=gjson.Get(spec,"name").Value().(string);!ok{n:=validator_error{Path:"_.name",Message:"shouldbeastring"}errors=append(errors,n)}}ifgjson.Ge

go - 为什么我会收到非数字类型 *int 错误?

我在下面的示例中遇到非数字类型*int错误,为什么?funcmain(){count:=0for{counting(&count)}}funccounting(count*int){fmt.Println(count)count++} 最佳答案 您需要取消引用指针:packagemainimport("fmt")funcmain(){count:=0fori:=0;i 关于go-为什么我会收到非数字类型*int错误?,我们在StackOverflow上找到一个类似的问题:

arrays - 如何将 *big.Int 转换为 golang 中的字节数组

我试图对一个大的int数进行计算,然后将结果转换为字节数组,但我不知道该怎么做,这就是我目前的处境。任何人有任何想法sum:=big.NewInt(0)for_,num:=rangebalances{sum=sum.Add(sum,num)}fmt.Println("total:",sum)phrase:=[]byte(sum)phraseLen:=len(phrase)padNumber:=65-phraseLen 最佳答案 尝试使用Int.Bytes()获取字节数组表示,并使用Int.SetBytes([]byte)从字节数组设

string - 为什么string不能转为uint8和int32以外的其他数据类型数组?

当我尝试将string转换为[]int时,编译失败。我发现字符串可以将转换为int32(rune)和uint8(byte)。这是我的测试代码:s1:="abcd"b1:=[]byte(s1)r1:=[]rune(s1)i1:=[]int8(s1)//error 最佳答案 简短的回答是因为语言规范不允许。非常量值的允许转换:Spec:Conversions:Anon-constantvaluexcanbeconvertedtotypeTinanyofthesecases:xisassignabletoT.ignoringstructt

go - 如何在 for 循环中创建持续时间 -(不匹配类型 int 和 time.Duration)

我有一个循环,我从一个时间开始。时间和我添加一分钟的内容。foridx:=rangekeys{vara=idx*time.Minutevart=tInit.Add(time.Minute*a)fmt.Println(t,idx)}这是我的错误invalidoperation:idx*time.Minute(mismatchedtypesintandtime.Duration) 最佳答案 数值运算的操作数必须具有相同的类型。Convertint值idx到time.Duration:vara=time.Duration(idx)*tim

arrays - 不匹配的类型 float64 和 int

我正在尝试创建随机成绩并将它们添加到test_scores数组中。然后计算平均值。这个程序:packagemainimport("fmt""math/rand")funcmain(){i:=0vartest_scores[5]float64fori产生:main.go:24:invalidoperation:total/5(mismatchedtypesfloat64andint)这个很好用:packagemainimport("fmt""math/rand")funcmain(){i:=0vartest_scores[5]float64fori唯一的区别是在最后一行,我使用了固定的5

go - 丢弃字符串到 int 转换的错误值

我有一个Go程序,我只想将一个字符串转换为一个int。我理解的功能:val,err:=strconv.Atoi(myValueAsAString)有效,我可以通过以下方式检查错误:iferr!=nil{//handleerror}但是如果我100%字符串将是一个数字,我想在if语句中将它转换为一个int,如下所示:if45+strconv.Atoi(value)>=90{//dosomething}但是strconv.Atoi也返回一个错误值,所以我怎样才能把它扔掉并基本上执行我上面所做的,而不必在if语句上方定义变量并在if语句中使用它。我不确定这是否可能,但我很想知道。

pointers - big.Int 和 *big.Int 之间的区别,以及如何按值传递 big.Int

我可以在big.Int上使用像Text()这样的方法,它工作正常,但是如果我返回一个big.Int然后使用“myfunc().Text()”会抛出一个错误,而如果我返回一个*big.Int,我没有收到任何错误。为什么我可以在big.Int、*big.Int和返回*big.Int的函数上使用Text()而不能在返回值为big.Int的函数上使用?https://play.golang.org/p/ovgeQDHFstP基于此行为和其他行为(例如它的打印方式),*big.Int似乎是打算使用的类型,对吗?此外,如果我创建并使用类型为big.Int或*big.Int的变量,它会通过引用传递。