aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2022-05-11 16:21:45 -0700
committerRobert Griesemer <gri@golang.org>2022-05-12 04:47:29 +0000
commit2bea43b0e7f3e636ffc8239f9d3fccdd5d763c8b (patch)
treef15218c76c803b57869ec7eb85f493801d747651
parentc01feba15de402dce666e4f9bf14a06fc64aa97d (diff)
downloadgo-2bea43b0e7f3e636ffc8239f9d3fccdd5d763c8b.tar.xz
spec: state that variable names must be unique in short var decls
Fixes #45652. Change-Id: I5e1434480c12815369a6ce204f3729eb63139125 Reviewed-on: https://go-review.googlesource.com/c/go/+/405757 Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-rw-r--r--doc/go_spec.html6
1 files changed, 4 insertions, 2 deletions
diff --git a/doc/go_spec.html b/doc/go_spec.html
index 069d33ba55..4f647cac10 100644
--- a/doc/go_spec.html
+++ b/doc/go_spec.html
@@ -2761,7 +2761,7 @@ It is shorthand for a regular <a href="#Variable_declarations">variable declarat
with initializer expressions but no types:
</p>
-<pre class="grammar">
+<pre class="ebnf">
"var" IdentifierList = ExpressionList .
</pre>
@@ -2780,12 +2780,14 @@ variables provided they were originally declared earlier in the same block
and at least one of the non-<a href="#Blank_identifier">blank</a> variables is new.
As a consequence, redeclaration can only appear in a multi-variable short declaration.
Redeclaration does not introduce a new variable; it just assigns a new value to the original.
+The non-blank variable names on the left side of <code>:=</code>
+must be <a href="#Uniqueness_of_identifiers">unique</a>.
</p>
<pre>
field1, offset := nextField(str, 0)
field2, offset := nextField(str, offset) // redeclares offset
-a, a := 1, 2 // illegal: double declaration of a or no new variable if a was declared elsewhere
+x, y, x := 1, 2, 3 // illegal: x repeated on left side of :=
</pre>
<p>