func main() { n := 1 nbytes := i2bin(n) for i := 0; i < len(nbytes); i++ { fmt.Printf("value: %v,addr: %p", nbytes[i], &nbytes[i]) } } func i2bin(i int) []byte { sh := &reflect.SliceHeader{Len: 8, Cap: 8, Data: uintptr(unsafe.Pointer(&i))} return *(*[]byte)(unsafe.Pointer(sh)) } 如题,转换完成后数据是正常的为: [0]:0x1 [1]:0x0 [2]:0x0 [3]:0x0 [4]:0x0 [5]:0x0 [6]:0x0 [7]:0x0
进入循环,第一次打印数组结束数据就变成了: [0]:0x9 [1]:0x10 [2]:0xa3 [3]:0x0 [4]:0x0 [5]:0x0 [6]:0x0 [7]:0x0
为什么会发生变化呢?
golang: v1.18.3 windows
