Golang是一個目前流行的程式語言,它的內建資料型別slice(切片)在使用上非常常見。 Slice是指記憶體中一段連續的資料塊,它具有動態變長的特性,與陣列不同。本文將詳細介紹Golang slice的使用方法。
在Golang中建立slice有兩種方法:
(1)使用make()函數來建立slice
make()函數是Golang中用來建立slice、map以及channel等的函數。使用make()函數建立slice時,需要指明slice的類型、長度以及容量。如下所示:
s := make([]int, 5, 10)
上述程式碼建立了一個包含5個元素的int類型的slice,並且分配了10個元素的儲存空間。其中,長度是5,容量是10。
(2)使用字面量方式來建立slice
在字面量方式中,可以初始化一個slice並且定義它的初始值。如下所示:
s := []int{1, 2, 3, 4, 5}
上述程式碼建立了一個包含5個元素的int類型的slice,並且透過{}定義了它的初始值。
與陣列相同,slice也可以透過下標的方式存取元素。如下所示:
s := []int{1, 2, 3, 4, 5} s[0] // 访问第一个元素 s[1] // 访问第二个元素 ...
(1)使用for迴圈遍歷slice
可以使用for迴圈遍歷一個slice,並且取得每個元素的值。如下所示:
s := []int{1, 2, 3, 4, 5} for i := 0; i < len(s); i++ { fmt.Println(s[i]) }
(2)使用range關鍵字遍歷slice
使用range關鍵字可以更方便地遍歷一個slice,並且取得每個元素的值。如下所示:
s := []int{1, 2, 3, 4, 5} for _, v := range s { fmt.Println(v) }
上述程式碼中,使用_忽略了下標的回傳值,只取得了元素的值。
在Golang中,可以對一個slice進行切割操作,從而得到一個更小的切片。
slice的切割操作是透過冒號(:)來實現的,第一個冒號前的數字表示起始位置,第一個冒號後的數字表示結束位置(不包括該位置),如下所示:
s := []int{1, 2, 3, 4, 5} s1 := s[1:3] // s1变成了[2, 3]
上述程式碼中,s1是從s[1]開始的,一直到s[3](不包括s[3])。
如果冒號前的數字省略,表示從slice的第一個元素開始切割。如果冒號後面的數字省略,表示一直切到slice的最後一個元素。
slice具有動態變長的特性,因此可以在現有的slice上追加一個或多個元素。
可以使用內建函數append()來追加一個或多個元素到slice中。 append()函數會自動擴充slice的容量,以容納新加入的元素。
s := []int{1, 2, 3, 4, 5} s = append(s, 6) // 追加一个元素6 s = append(s, 7, 8, 9) // 追加三个元素7、8、9
在Golang中,slice沒有刪除元素的內建函數,但是可以使用append()函數配合切割運算來實作刪除元素的功能。
例如,想刪除slice中的第三個元素,可以依照下列步驟進行:
(1)使用slice的切割操作,刪除要刪除的元素,如下所示:
s := []int{1, 2, 3, 4, 5} s = append(s[:2], s[3:]...)
在上述程式碼中,使用append()函數配合切割操作,刪除了slice中的第三個元素s[2]。
(2)使用for迴圈遍歷slice,找到要刪除的元素,並且使用slice的切割操作刪除它。
在Golang中,可以使用內建函數copy()來複製一個slice。
s1 := []int{1, 2, 3, 4, 5} s2 := make([]int, len(s1)) copy(s2, s1)
上述程式碼中,使用make()函數來建立了一個長度與s1相同的slice s2,並且使用copy()函數把s1中的元素複製到s2中。
當複製的元素數量多於目標slice的容量時, copy()函數只會複製目標slice中的元素。如果目標slice大於來源slice,則會在目標slice尾部新增0值元素。
總結
透過上述內容我們可以總結出slice的主要特點:
(1)slice是一個動態變長的序列。
(2)slice的基本操作包括建立、存取元素、遍歷、切割、追加元素、刪除元素、複製。
(3)使用make()函數或字面量方式來建立slice。
(4)使用下標或range關鍵字來存取slice元素。
(5)使用切割運算實作slice的分割,使用append()函式追加元素,使用copy()函式複製slice。
總之,slice作為Golang中的一種內建資料類型,具有非常重要的作用。當我們需要動態變長的資料結構時,可以優先選擇使用slice。
以上是golang slice怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!