切片结构行为

当我们声明一个结构切片,但将数据类型设置为指向该结构的指针时,go 会自动将文字转换为指针吗?


type book struct {

    id int

    name string

}


var books = []*book {

    {1, "Yellow moon"}, // ---> Is this a pointer to book OR just book

}


白衣染霜花
浏览 133回答 3
3回答

慕村225694

可以定义有和没有类型:https://play.golang.org/p/CB2MDPDztrc

www说

它将是指向 的指针book,与 相同&book{1, "Yellow moon"},但规范允许省略类型和&运算符,因为从类型中很明显。var books = []*book {    {1, "Yellow moon"},  // This is the same as &book{1, "Yellow moon"}}规范:复合文字:在数组、切片或映射类型的复合文字中T,本身是复合文字的元素或映射键可以省略相应的文字类型,如果它与 的元素或键类型相同T。&T类似地,当元素或键类型为 时,作为复合文字地址的元素或键可以省略*T。[][]Point{{{0, 1}, {1, 2}}}  // same as [][]Point{[]Point{Point{0, 1}, Point{1, 2}}}[2]*Point{{1.5, -3.5}, {}}   // same as [2]*Point{&Point{1.5, -3.5}, &Point{}}

幕布斯7119047

Does go auto convert composite literals inside a slice to pointers if I declare the slice as a pointer to a struct?这是指向结构的指针的默认行为当我们拥有结构指针 p 时,要访问结构的字段 X,我们可以编写 (*p).X。然而,这种表示法很麻烦,因此该语言允许我们只写 pX,而无需显式取消引用。https://tour.golang.org/moretypes/4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go