]> Cypherpunks repositories - gostls13.git/commitdiff
spec: additional composite literal shortenings per Go 1 plan
authorRuss Cox <rsc@golang.org>
Fri, 2 Dec 2011 19:12:53 +0000 (14:12 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 2 Dec 2011 19:12:53 +0000 (14:12 -0500)
R=golang-dev, gri, r, r
CC=golang-dev
https://golang.org/cl/5449067

doc/go_spec.html

index 00cb96287292e6702254c5de209ee68021d5de85..04cab1dbb6e06a94920d4dfc54c120158c703d26 100644 (file)
@@ -2118,11 +2118,26 @@ tmp[0 : n]
 Within a composite literal of array, slice, or map type <code>T</code>,
 elements that are themselves composite literals may elide the respective
 literal type if it is identical to the element type of <code>T</code>.
+Similarly, elements that are addresses of composite literals may elide
+the <code>&T</code> when the the element type is <code>*T</code>.
+The same elisions may be applied to field values within a struct literal,
+but only if the value has a field name key.
 </p>
 
+
+
 <pre>
-[...]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}}
 </pre>
 
 <p>