1. 程式人生 > GO語言入門 >27 Go 語言中的切片

27 Go 語言中的切片

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