指向结构的指针的切片文字的 golang 快捷语法

ysz*_*ysz 5 pointers literals go

给定的

type foo struct {
    id int
}
Run Code Online (Sandbox Code Playgroud)

两者看起来相当

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

var foos = []*foo{
    &foo{1},
    &foo{2},
    &foo{3}}
Run Code Online (Sandbox Code Playgroud)

这是为什么?虽然在 TGPL 中找不到提及它。

https://play.golang.org/p/JXxZaybbWnV

Grz*_*Żur 5

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

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