用于结构指针的切片文字的golang快捷方式语法

Given

type foo struct {
    id int
}

the two look equivalent

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

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

Why is that? Can't find mentioning of it in TGPL though.

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

You can skip the type in composite literals.

Within a composite literal of array, slice, or map type T, elements or map keys that are themselves composite literals may elide the respective literal type if it is identical to the element or key type of T. Similarly, elements or keys that are addresses of composite literals may elide the &T when the element or key type is *T.