报错描述
程序再window上能好好的运行,但是到linux上报错,runtime error: index out of range [-6],截图如下:
报错分析
对代码进行了跟踪,发现这个错误最终的语句是:
var now uint64 = 1673337355366
bucketLengthInMs := 500
timeId := now / uint64(bucketLengthInMs)
idx := int(timeId) % 20
这一句再linux主机上竟然得到了负数。想必你也猜到原因了,机器是64位,但是编译的时候GOARCH使用了386,导致timeId的值超出了int的范围,从而得到了一个负数。
解决办法
将GOARCH改为64位的值,重新进行编译。
linux | 386 |
linux | amd64 |
linux | arm |
linux | arm64 |
linux | ppc64 |
linux | ppc64le |
linux | mips |
linux | mipsle |
linux | mips64 |
linux | mips64le |
linux | s390x |
比如我的机器的架构是 amd64,可以执行如下命令
export GOARCH='amd64'