当我们声明一个结构片,但将数据类型设置为指向该结构的指针时,会自动将文字转换为指针吗?
type book struct {
id int
name string
}
var books = []*book {
{1, "Yellow moon"}, // ---> Is this a pointer to book OR just book
}
答案 0 :(得分:2)
它将是指向book
的指针,与&book{1, "Yellow moon"}
相同,但是该规范允许忽略类型和&
运算符,因为从类型上很明显。
var books = []*book {
{1, "Yellow moon"}, // This is the same as &book{1, "Yellow moon"}
}
在数组,切片或映射类型为
T
的复合文字中,如果本身与复合文字相同的元素或映射键与{{1 }}。同样,当元素或键的类型为T
时,作为组合文字的地址的元素或键可能会滑移&T
。*T
答案 1 :(得分:1)
可以定义有无类型:
答案 2 :(得分:0)
Does go auto convert composite literals inside a slice to pointers if I declare the slice as a pointer to a struct?
这是指向struct的指针的默认行为
要在有结构指针p时访问结构的字段X,我们可以编写(* p).X。但是,这种表示法很麻烦,因此该语言允许我们改为只编写p.X,而无需显式取消引用。