为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 引用子结构数组的问题

Golang 引用子结构数组的问题

Go
慕仙森 2021-09-13 10:32:48
我在弄清楚如何引用子结构的元素时遇到问题。见: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)

但是,实际上,只需取出指针即可。


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信