Golang 中国
buf := new(bytes.Buffer)
fmt.Println("aaa0aa", unsafe.Sizeof(buf.Bytes()))  //打印出来24
binary.Write(buf, binary.LittleEndian, data)
fmt.Println("aaa1aa", unsafe.Sizeof(buf.Bytes())) //,加入data后,打印出来还是24

....

n, err := conn.Write(buf.Bytes()) // n打印出来是72

两个疑问点,
1.是为了加了数据还是24
2.为什么明明是24的数据,wirte的时候返回时72

求解答

1 回复
heimeil
#1 heimeil • 2017-09-13 11:08

For instance, if x is a slice, Sizeof returns the size of the slice descriptor, not the size of the memory referenced by the slice.

unsafe.SizeOf()取的是指针长度,你的机器上不管是哪个buf取到的都是24,这个长度在不同机器上才会变,要取[]byte的长度就用len()

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。