Golang指针结构体切片的字面量快捷语法

7

鉴于

type foo struct {
    id int
}

这两者看起来是等价的。

var foos = []*foo{
    {1},
    {2},
    {3}}

var foos = []*foo{
    &foo{1},
    &foo{2},
    &foo{3}}

为什么会这样?虽然TGPL中没有提到它。 https://play.golang.org/p/JXxZaybbWnV
1个回答

7

您可以跳过 复合字面量 中的类型。

在数组、切片或映射类型T的复合字面量中,如果元素或键本身是复合字面量,则可以省略其对应的字面量类型,如果它与T的元素或键类型相同。类似地,如果元素或键的类型为*T,则当元素或键类型为*T时,它们的地址可以省略&T。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接