Golang中的切片初始化
切片的初始化方法很多,可以直接初始化,也可以使用数组初始化等。
切片如何切分
要注意,指定下标切分的时候是,左包含,右不包含的
只有[:]则是所有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main
import "fmt"
func slice1() { var s1 = []int{1, 2, 3, 4, 5, 6} s2 := s1[0:3] fmt.Printf("s2: %v\n", s2) s3 := s1[3:] fmt.Printf("s3: %v\n", s3) s4 := s1[3:5] fmt.Printf("s4: %v\n", s4) s5 := s1[:] fmt.Printf("s5: %v\n", s5) } func main() { slice1() }
|
运行结果
1 2 3 4
| s2: [1 2 3] s3: [4 5 6] s4: [4 5] s5: [1 2 3 4 5 6]
|
直接初始化
1 2 3 4 5 6 7 8
| package main
import "fmt"
func main() { s := []int{1, 2, 3} fmt.Printf("s: %v\n", s) }
|
运行结果
使用数组初始化
1 2 3 4 5 6 7 8 9
| package main
import "fmt"
func main() { arr := [...]int{1, 2, 3} s1 := arr[:] fmt.Printf("s1: %v\n", s1) }
|
运行结果
使用数组的部分元素初始化(切片表达式)
切片的底层就是一个数组
,所以我们可以基于数组通过切片表达式得到切片
,切片表达式中的low和high表示一个索引范围(左包含,右不包含
),得到的切片长度
=high-low,容量等于得到的切片的底层数组的容量。
1 2 3 4 5 6 7 8 9 10 11 12 13
| package main
import "fmt"
func main() { arr := [...]int{1, 2, 3, 4, 5, 6} s1 := arr[2:5] fmt.Printf("s1: %v\n", s1) s2 := arr[2:] fmt.Printf("s2: %v\n", s2) s3 := arr[:3] fmt.Printf("s3: %v\n", s3) }
|
运行结果
1 2 3
| s1: [3 4 5] s2: [3 4 5 6] s3: [1 2 3]
|