Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

golang shortcut syntax for slice literal of pointers to structs

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

like image 565
ysz Avatar asked Feb 13 '18 13:02

ysz


1 Answers

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.

like image 59
Grzegorz Żur Avatar answered Sep 20 '22 08:09

Grzegorz Żur