Reputation: 5240
How can I get the memory address of an embedded slice in a struct?
Example:
type t1 struct {
data string
}
type t2 struct {
listData []t1
}
Now I want to know the memory address of listData
. I couldn't figure out how to get the memory address out of it using the following:
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
Upvotes: 1
Views: 53
Reputation: 46433
listData
is the first field in the struct, its memory offset relative to the struct's address is zero, so they have the same address.
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
Upvotes: 3