猿问

Golang 引用子结构数组的问题

我在弄清楚如何引用子结构的元素时遇到问题。


见:http : //play.golang.org/p/pamS_ZY01s


给出类似以下内容......你如何引用房间结构中的数据?我试过了fmt.Println(*n.Homes[0].Rooms[0].Size),但这不起作用。


开始代码示例


package main


import (

    "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)


}



慕仙森
浏览 188回答 1
1回答

FFIVE

第一,*[]Home真的很浪费。切片是引擎盖下的三字结构,其中一个本身就是指向数组的指针。你在那里引入了双重间接。这篇关于 Go 中数据结构的文章非常有用。现在,由于这种间接性,您需要将解引用运算符*放在每个指向切片的指针表达式中。像这样:fmt.Println((*(*n.Homes)[0].Rooms)[0].Size)但是,实际上,只需取出指针即可。
随时随地看视频慕课网APP

相关分类

Go
我要回答