golang 的指针地址问题
s0 := "something" s1 := "something" s2 := "something"[7:] fmt.Println(&s0, &s1, &s2) fmt.Printf("%d n", (*reflect.StringHeader)(unsafe.Pointer(&s0)).Data) fmt.Printf("%d n", (*reflect.StringHeader)(unsafe.Pointer(&s1)).Data) fmt.Printf("%d n", (*reflect.StringHeader)(unsafe.Pointer(&s2)).Data)
结果是
0xc00010a040 0xc00010a050 0xc00010a060 4974445 4974445 4974452
- 为什么 & 出来的总差 16 ? unsafe.Pointer 是一样的?(请忽略切片的)