- 切片:切片是數組的一個引用,因此切片是引用類型
- 切片的長度可以改變,因此,切片是一個可變的數組
- 切片遍歷方式和數組一樣,可以用len()求長度
- cap可以求出slice最大的容量,0 <= len(slice) <= (array),其中array是slice引用的數組
-
切片的定義:var 變量名 []類型,比如 var str []string var arr []int
- 切片初始化:var slice []int = arr[start:end]
包含start到end之間的元素,但不包含end - Var slice []int = arr[0:end]可以簡寫爲 var slice []int=arr[:end]
- Var slice []int = arr[start:len(arr)] 可以簡寫爲 var slice[]int = arr[start:]
- Var slice []int = arr[0, len(arr)] 可以簡寫爲 var slice[]int = arr[:]
- 如果要切片最後一個元素去掉,可以這麼寫:
Slice = slice[:len(slice)-1]
創建切片的方式:var slice []type = make([]type, len) slice := make([]type, len) slice := make([]type, len, cap)
從數組中截取出切片:
var a = [5]int{1,2,3,4,5} fmt.Println(a) //切片引用傳值 var b = a[1:] fmt.Println(b) b[0] = 666 fmt.Println(a) fmt.Println(b)
輸出:
[1 2 3 4 5]
[2 3 4 5]
[1 666 3 4 5]
[666 3 4 5]
用append內置函數操作切片:
slice = append(slice, 10)
var a = []int{1,2,3}
var b = []int{4,5,6}
a = append(a, b…)
For range 遍歷切片:
for index, val := range slice {
}
切片resize:
var a = []int {1,3,4,5}
b := a[1:2]
b = b[0:3]
切片拷貝:
s1 := []int{1,2,3,4,5}
s2 := make([]int, 10)
copy(s2, s1)
s3 := []int{1,2,3}
s3 = append(s3, s2…)
s3 = append(s3, 4,5,6)
string與slice,string底層就是一個byte的數組,因此,也可以進行切片操作:
str := “hello world”
s1 := str[0:5]
fmt.Println(s1)
s2 := str[5:]
fmt.Println(s2)
如何改變string中的字符值?string本身是不可變的,因此要改變string中字符,需要如下操作:
str := “hello world”
s := []byte(str)
s[0] = ‘o’
str = string(s)