如何获取结构中嵌入式切片的内存地址?
示例:
type t1 struct {
data string
}
type t2 struct {
listData []t1
}
现在,我想知道listData
的内存地址。我不知道如何使用以下方法获取内存地址:
newData := t2{}
newData.listData = append(newData.listData, t1{data:"mydata"})
printf("%p", &newData.listData) // this doesn't work, in fact it returns address of newData
答案 0 :(得分:3)
listData
是结构中的第一个字段,其相对于结构地址的内存偏移为零,因此它们具有相同的地址。
type t2 struct {
listData []string
moreData []int
}
func main() {
var foo t2
fmt.Printf("%p %p %p", &foo, &foo.listData, &foo.moreData)
}
0x43e260 0x43e260 0x43e26c