http://play.golang.org/p/RqScJVvpS7
package main
import (
"fmt"
"math/rand"
"encoding/binary"
)
func main() {
buffer := []byte{0, 0, 0, 0, 0, 0, 0, 0}
num := rand.Int63()
count := binary.PutVarint(buffer, num)
fmt.Println(count)
}
前一段时间我有这个工作,num当时只是一个递增uint64,我正在使用binary.PutUvarint但现在它是一个随机的 int64 并且binary.PutVarint我收到一个错误:
panic: runtime error: index out of range
goroutine 1 [running]:
encoding/binary.PutUvarint(0x1042bf58, 0x8, 0x8, 0x6ccb, 0xff9faa4, 0x9acb0442, 0x7fcfd52, 0x4d658221)
/usr/local/go/src/encoding/binary/varint.go:44 +0xc0
encoding/binary.PutVarint(0x1042bf58, 0x8, 0x8, 0x6ccb, 0x7fcfd52, 0x4d658221, 0x14f9e0, 0x104000e0)
/usr/local/go/src/encoding/binary/varint.go:83 +0x60
main.main()
/tmp/sandbox010341234/main.go:12 +0x100
我错过了什么?我会认为这是一个微不足道的改变......
编辑:我只是尝试扩展我的缓冲区数组。对于一些奇怪的原因,它的工作原理和我获得count的10。怎么可能?int64是 64 位 = 8 字节,对吗?
MMMHUHU
相关分类