aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2011-12-02 12:30:37 -0500
committerRuss Cox <rsc@golang.org>2011-12-02 12:30:37 -0500
commitda5a251dde539c91c87caab4abe3d346f88e82fc (patch)
treee7f498aaa132850455865878c8e35e93ab7e6574
parent4dfe976d974669e1234fbcd4f95341be41c1e575 (diff)
downloadgo-da5a251dde539c91c87caab4abe3d346f88e82fc.tar.gz
go-da5a251dde539c91c87caab4abe3d346f88e82fc.zip
doc: do not slice array literal
The special case in the spec is that you can take the address of a composite literal using the & operator. A composite literal is not, however, generally addressable, and the slice operator requires an addressable argument, so [3]int{1,2,3}[:] is invalid. This tutorial code and one bug report are the only places in the tree where it appears. R=r, gri CC=golang-dev https://golang.org/cl/5437120
-rw-r--r--doc/go_tutorial.html8
-rw-r--r--doc/go_tutorial.tmpl8
-rw-r--r--doc/progs/sum.go3
3 files changed, 12 insertions, 7 deletions
diff --git a/doc/go_tutorial.html b/doc/go_tutorial.html
index 88785a2124..423abe8b0a 100644
--- a/doc/go_tutorial.html
+++ b/doc/go_tutorial.html
@@ -343,19 +343,21 @@ Using slices one can write this function (from <code>sum.go</code>):
Note how the return type (<code>int</code>) is defined for <code>sum</code> by stating it
after the parameter list.
<p>
-To call the function, we slice the array. This intricate call (we'll show
+To call the function, we slice the array. This code (we'll show
a simpler way in a moment) constructs
an array and slices it:
<p>
<pre>
-s := sum([3]int{1,2,3}[:])
+x := [3]int{1,2,3}
+s := sum(x[:])
</pre>
<p>
If you are creating a regular array but want the compiler to count the
elements for you, use <code>...</code> as the array size:
<p>
<pre>
-s := sum([...]int{1,2,3}[:])
+x := [...]int{1,2,3}
+s := sum(x[:])
</pre>
<p>
That's fussier than necessary, though.
diff --git a/doc/go_tutorial.tmpl b/doc/go_tutorial.tmpl
index dfd818959c..d1219b47ed 100644
--- a/doc/go_tutorial.tmpl
+++ b/doc/go_tutorial.tmpl
@@ -288,19 +288,21 @@ Using slices one can write this function (from <code>sum.go</code>):
Note how the return type (<code>int</code>) is defined for <code>sum</code> by stating it
after the parameter list.
<p>
-To call the function, we slice the array. This intricate call (we'll show
+To call the function, we slice the array. This code (we'll show
a simpler way in a moment) constructs
an array and slices it:
<p>
<pre>
-s := sum([3]int{1,2,3}[:])
+x := [3]int{1,2,3}
+s := sum(x[:])
</pre>
<p>
If you are creating a regular array but want the compiler to count the
elements for you, use <code>...</code> as the array size:
<p>
<pre>
-s := sum([...]int{1,2,3}[:])
+x := [...]int{1,2,3}
+s := sum(x[:])
</pre>
<p>
That's fussier than necessary, though.
diff --git a/doc/progs/sum.go b/doc/progs/sum.go
index e022195ed5..0f316bc012 100644
--- a/doc/progs/sum.go
+++ b/doc/progs/sum.go
@@ -15,6 +15,7 @@ func sum(a []int) int { // returns an int
}
func main() {
- s := sum([3]int{1, 2, 3}[:]) // a slice of the array is passed to sum
+ x := [3]int{1, 2, 3}
+ s := sum(x[:]) // a slice of the array is passed to sum
fmt.Print(s, "\n")
}