diff options
author | Robert Griesemer <gri@golang.org> | 2019-05-14 10:22:04 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2019-05-14 22:30:48 +0000 |
commit | 1e3ffb0c902fc282469e7748ce066ee9ea7a6580 (patch) | |
tree | c55a0f3783d93fc8694967815857933a2f0f337f /doc/go_spec.html | |
parent | 02d24fc2528578065b506f07bc6214adcac3be4b (diff) | |
download | go-1e3ffb0c902fc282469e7748ce066ee9ea7a6580.tar.gz go-1e3ffb0c902fc282469e7748ce066ee9ea7a6580.zip |
spec: clarify that slice a expression shares underlying array with operand
The spec was not very precise as to what happens with respect to sharing
if a sliced operand is (a pointer to) an array. Added a small clarification
and a supporting example.
Fixes #31689.
Change-Id: Ic49351bec2033abd3f5428154ec3e9a7c2c9eaa5
Reviewed-on: https://go-review.googlesource.com/c/go/+/177139
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'doc/go_spec.html')
-rw-r--r-- | doc/go_spec.html | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/doc/go_spec.html b/doc/go_spec.html index dea3afe498..fb4341be1d 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ <!--{ "Title": "The Go Programming Language Specification", - "Subtitle": "Version of May 13, 2019", + "Subtitle": "Version of May 14, 2019", "Path": "/ref/spec" }--> @@ -3262,6 +3262,14 @@ is a <code>nil</code> slice. Otherwise, if the result is a slice, it shares its array with the operand. </p> +<pre> +var a [10]int +s1 := a[3:7] // underlying array of s1 is array a; &s1[2] == &a[5] +s2 := s1[1:4] // underlying array of s2 is underlying array of s1 which is array a; &s2[1] == &a[5] +s2[1] = 42 // s2[1] == s1[2] == a[5] == 42; they all refer to the same underlying array element +</pre> + + <h4>Full slice expressions</h4> <p> |