1、切片的創建
示例:
package main //必須有個main包 import "fmt" func main() { //切片和數組的區別 //數組[]里面的長度時固定的一個常量, 數組不能修改長度, len和cap永遠都是5 a := [5]int{} fmt.Printf("len = %d, cap = %d\n", len(a), cap(a)) //切片, []里面為空,或者為...,切片的長度或容量可以不固定 s := []int{} fmt.Printf("1: len = %d, cap = %d\n", len(s), cap(s)) s = append(s, 11) //給切片末尾追加一個成員 fmt.Printf("append: len = %d, cap = %d\n", len(s), cap(s)) }
執行結果:
len = 5, cap = 5 1: len = 0, cap = 0 append: len = 1, cap = 1
2、切片的截取
切片語法:
操作 |
含義 |
s[n] |
切片s中索引位置為n的項 |
s[:] |
從切片s的索引位置0到len(s)-1處所獲得的切片 |
s[low:] |
從切片s的索引位置low到len(s)-1處所獲得的切片 |
s[:high] |
從切片s的索引位置0到high處所獲得的切片,len=high |
s[low:high] |
從切片s的索引位置low到high處所獲得的切片,len=high-low |
s[low:high:max] |
從切片s的索引位置low到high處所獲得的切片,len=high-low,cap=max-low |
len(s) |
切片s的長度,總是<=cap(s) |
cap(s) |
切片s的容量,總是>=len(s) |
示例:
package main //必須有個main包
import "fmt"
func main() {
array := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
//[low:high:max] 取下標從low開始的元素, len=high-low, cap=max-low
s1 := array[:] //[0:len(array):len(array)] 不指定容量和長度一樣
fmt.Println("s1 = ", s1)
fmt.Printf("len = %d, cap = %d\n", len(s1), cap(s1))
//操作某個元素,和數組操作方式一樣
data := array[1]
fmt.Println("data = ", data)
s2 := array[3:6:7] //a[3], a[4], a[5] len = 6-3=3 cap = 7-3=4
fmt.Println("s2 = ", s2)
fmt.Printf("len = %d, cap = %d\n", len(s2), cap(s2))
s3 := array[:6] //從0開始,去6個元素,容量也是6, 常用
fmt.Println("s3 = ", s3)
fmt.Printf("len = %d, cap = %d\n", len(s3), cap(s3))
s4 := array[3:] //從下標為3開始,到結尾
fmt.Println("s4 = ", s4) //[3 4 5 6 7 8 9]
fmt.Printf("len = %d, cap = %d\n", len(s4), cap(s4))
}
執行結果:
s1 = [0 1 2 3 4 5 6 7 8 9]
len = 10, cap = 10
data = 1
s2 = [3 4 5]
len = 3, cap = 4
s3 = [0 1 2 3 4 5]
len = 6, cap = 10
s4 = [3 4 5 6 7 8 9]
len = 7, cap = 7