如何获取结构中嵌入式切片的内存地址?

Seyed Vahid Hashemi:

如何获取结构中嵌入式切片的内存地址?

例:

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
阿德里安:

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

https://play.golang.org/p/FVMujcUHHYq

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章