mirror of
https://github.com/golang/go
synced 2024-11-23 23:20:08 -07:00
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
This commit is contained in:
parent
4dfe976d97
commit
da5a251dde
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user