27 Go 語言中的切片
阿新 • • 發佈:2020-06-25
1. 切片的建立
切片的宣告方式和陣列類似,寫法上看就是宣告一個沒有長度的陣列:var 切片名 []切片型別
。其中切片型別可以是切片本身,也就是切片的切片,就構成了多維的切片。
切片在使用之前必須要初始化,它沒有零值。聲明後它的值是 nil,這是因為它的底層實現是一個指向陣列的指標,在你給它存入一個數組的地址之前,它只能是 nil。
程式碼示例:
package main
import (
"fmt"
)
func main() {
var a []int
fmt.Println("初始化前:", a)
a = make([]int, 5, 10)
fmt. Println("初始化後:", a)
a[4] = 5
fmt.Println(" 賦值後:", a)
a[5] = 6
fmt.Println("賦值後:", a)
}
- 第 8 行:宣告一個int型別的切片。
- 第 10 行:宣告一個長度為5,切片容量為10的切片。其中容量可以不傳,預設會和長度相等。長度為切片真正有值的位置,會初始化零值。
- 第 12 行:給切片的第 5 個位置賦值。
- 第 14 行:給切片的第 6 個位置賦值,但是切片的長度為5,所以會報越界的錯誤。
執行結果:
2. 切片的擷取
切片之所以被叫做切片是有原因的,它可以從任意長度開始切,切到任意長度為止,然後這一段拿出來就是一個新的切片。切割形式為切片名(s)[起始下標(begin):結束下標(end):最大容量(max)]
Tips:擷取到的切片包含起始下標(begin),不包含結束下標(end)。
切片擷取形式表
操作 | 含義 |
---|---|
s[begin |