Slice 有更多细节,很容易出错。

易错点

下面是一段代码:

package main
 
import "fmt"
 
func main() {
 arr := make([]int, 3, 5)
 
 arr[0], arr[1], arr[2] = 2, 7, 9
 
 brr := append(arr, 8)
 brr = append(brr, 8)
 fmt.Println("######################### Stage 1 #########################")
 fmt.Println(arr)
 fmt.Println(brr)
 
 fmt.Println("######################### Stage 2 #########################")
 arr[0] = 4
 fmt.Println(brr[0])
 brr = append(brr, 8)
 arr[1] = 5
 fmt.Println(brr[1])
 fmt.Println(len(brr), cap(brr))
 fmt.Println(len(arr), cap(arr))
}

结果应该如下:

######################### Stage 1 #########################
[2 7 9]
[2 7 9 8 8]
######################### Stage 2 #########################
4
7
6 10
3 5
 
Process finished with the exit code 0

for 和 slice

package main
 
import "fmt"
 
func main() {
	arr := make([]int, 3, 5)
	arr[0], arr[1], arr[2] = 2, 7, 9
	for i, ele := range arr {
		fmt.Println(i, ele)
	}
}