- 字面量
- make()
- append()
- copy()
- range
- len()
- cap()
- nil ==
例子
package main
import (
"fmt"
)
func main() {
//字面量
var s0 []int //s0: nil
var s1 = []int{0, 1, 2} //s1: [0,1,2]
//make()
var s2 = make([]int, 2) //s2: [0,0],len = 2
var s3 = make([]int, 2, 4) //s3: [0,0],len = 2,cap = 4
//append()
s0 = append(s0, 0) // s0: [0]
s1 = append(s1, 3, 4) //s1: [0,1,2,3,4]
s2 = append(s2, s1[2:4]...) //s2: [0,0,2,3], ... 解包操作
//copy()
length := copy(s3[0:], s1[1:]) //s3: [1,2],s1[1:]: [1,2,3,4]. length: 2
fmt.Println(len(s3), len(s1[1:]), length)
//range
for i := range s3 { //i 是 s3 的索引
fmt.Printf("s3[%v] = %v\n", i, s3[i])
}
//len() cap()
fmt.Println(len(s3), cap(s3)) //长度2,容量4
//nil == , 只能和 nil 判等
fmt.Println(nil == s0) //false
fmt.Println(s0, s1, s2, s3)
}
输出
2 4 2
s3[0] = 1
s3[1] = 2
2 4
false
[0] [0 1 2 3 4] [0 0 2 3] [1 2]