From: Russ Cox T
,
elements that are themselves composite literals may elide the respective
literal type if it is identical to the element type of T
.
+Similarly, elements that are addresses of composite literals may elide
+the &T
when the the element type is *T
.
+The same elisions may be applied to field values within a struct literal,
+but only if the value has a field name key.
-[...]Point{{1.5, -3.5}, {0, 0}} // same as [...]Point{Point{1.5, -3.5}, Point{0, 0}} -[][]int{{1, 2, 3}, {4, 5}} // same as [][]int{[]int{1, 2, 3}, []int{4, 5}} +[...]Point{{1.5, -3.5}, {0, 0}} // same as [...]Point{Point{1.5, -3.5}, Point{0, 0}} +[][]int{{1, 2, 3}, {4, 5}} // same as [][]int{[]int{1, 2, 3}, []int{4, 5}} + +[...]*Point{{1.5, -3.5}, {0, 0}} // same as [...]*Point{&Point{1.5, -3.5}, &Point{0, 0}} + +type List struct { + Val int + Next *List +} + +&List{Val: 1, Next: {Val: 2}} // same as &List{Val: 1, Next: &List{Val: 2}}