我用来测试某些预期行为的应用程序的一小部分给出了不同的输出,具体取决于我运行它的处理器。这是代码的相关部分: for b := 0; b < intCounter; b++ { //int64Random = rand.Int63() int64Random = int64(rand.Int())//CHECKING FOR SANITYfmt.Println("int64Random is " + strconv.FormatInt(int64Random, 10)) slcTestNums = append(slcTestNums, int64Random) }当我在我的 Mac(amd64,darwin)上运行它时,我得到如下输出:int64Random is 2991558990735723489int64Random is 7893058381743103687int64Random is 7672635040537837613int64Random is 1557718564618710869int64Random is 2107352926413218802当我在 Pi(arm,linux)上运行它时,我得到如下输出:int64Random is 1251459732int64Random is 1316852782int64Random is 971786136int64Random is 1359359453int64Random is 729066469如果在 Pi 上我将 int64Random 更改为 = rand.Int63() 并重新编译,我会得到如下输出:int64Random is 7160249008355881289int64Random is 7184347289772016444int64Random is 9201664581141930074int64Random is 917219239600463359int64Random is 6015348270214295654...这更接近 Mac 所得到的。这是因为处理器架构在运行时发生了变化吗?为什么int64(rand.Int())生成 int64 范围的数字而不是保留一个 int 范围的数字,而是更改它所存储的变量的类型?我是否错过了提到这种行为的 Go 文档?
1 回答
- 1 回答
- 0 关注
- 166 浏览
添加回答
举报
0/150
提交
取消