我在弄清楚如何引用子结构的元素时遇到问题。见:http : //play.golang.org/p/pamS_ZY01s给出类似以下内容......你如何引用房间结构中的数据?我试过了fmt.Println(*n.Homes[0].Rooms[0].Size),但这不起作用。开始代码示例package mainimport ( "fmt")type Neighborhood struct { Name string Homes *[]Home}type Home struct { Color string Rooms *[]Room}type Room struct { Size string}func main() { var n Neighborhood var h1 Home var r1 Room n.Name = "Mountain Village" h1.Color = "Blue" r1.Size = "200 sq feet" // Initiaize Array of Homes homeslice := make([]Home, 0) n.Homes = &homeslice roomslice := make([]Room, 0) h1.Rooms = &roomslice *h1.Rooms = append(*h1.Rooms, r1) *n.Homes = append(*n.Homes, h1) fmt.Println(n) fmt.Println(*n.Homes)}
1 回答
FFIVE
TA贡献1797条经验 获得超6个赞
第一,*[]Home
真的很浪费。切片是引擎盖下的三字结构,其中一个本身就是指向数组的指针。你在那里引入了双重间接。这篇关于 Go 中数据结构的文章非常有用。
现在,由于这种间接性,您需要将解引用运算符*
放在每个指向切片的指针表达式中。像这样:
fmt.Println((*(*n.Homes)[0].Rooms)[0].Size)
但是,实际上,只需取出指针即可。
- 1 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消