首頁 > 後端開發 > Golang > 聊聊Golang的切片和append()函數的使用方法

聊聊Golang的切片和append()函數的使用方法

PHPz
發布: 2023-04-27 10:44:02
原創
949 人瀏覽過

在 Golang 的切片(slice)中,append() 是一個非常重要的函數,也是使用頻率非常高的函數。本文將介紹 Golang 的切片和 append() 函數的使用方法。

一、Golang 切片

與陣列相比,切片在 Golang 中具有更強大的功能。切片不同於陣列的地方是它的長度可以動態變化。在 Golang 中,切片是一個引用類型,它指向了一個底層數組,當切片容量不足時,切片大小會根據需要自動增加。

定義切片的方式如下:

var s1 []int // []int 表示定义了一个 int 类型的切片
登入後複製

此時的 s1 的長度和容量均為 0,因為沒有定義底層陣列。

定義長度為5,容量為10 的切片可以使用make() 函數實作:

s2 := make([]int, 5, 10) // 长度为 5,容量为 10
登入後複製

slice[index] 可以存取切片中的元素,其本質是底層陣列中的元素。 slice[start:end] 可以取得從 start(包含)到 end(不包含)的子切片。例如:

a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println(a[3])    // 4
fmt.Println(a[1:5])  // [2 3 4 5]
fmt.Println(a[:5])   // [1 2 3 4 5]
fmt.Println(a[5:])   // [6 7 8 9 10]
fmt.Println(a[:])    // [1 2 3 4 5 6 7 8 9 10]
登入後複製

二、append() 函數

append() 函數可將元素新增至切片末尾,並傳回一個新的切片。 append() 函數有以下幾種用法。

1. 將元素加入切片末尾

下面的程式碼向s1 中新增了元素,產生了新的切片:

s1 := []int{1, 2, 3, 4, 5}
s2 := append(s1, 6, 7)
fmt.Println(s1) // [1 2 3 4 5]
fmt.Println(s2) // [1 2 3 4 5 6 7]
登入後複製

注意:使用append() 函數在切片中新增元素時,如果沒有超過容量,則底層陣列不會改變,如果超過容量,則會產生新的底層陣列。

2. 將一個切片加入到另一個切片中

下面的程式碼向s1 中新增了s2 的元素,產生了新的切片:

s1 := []int{1, 2, 3, 4, 5}
s2 := []int{6, 7}
s3 := append(s1, s2...)
fmt.Println(s1) // [1 2 3 4 5]
fmt.Println(s2) // [6 7]
fmt.Println(s3) // [1 2 3 4 5 6 7]
登入後複製

注意:使用append() 函數將一個切片加入另一個切片時,需要在s2 後面加上三個點號(...),表示將s2 拆開後取出其中的元素。

3. 透過append() 產生新的切片

下面的程式碼建立了一個長度為0,容量為0 的切片s1,然後向其中加入元素:

var s1 []int
s1 = append(s1, 1)
s1 = append(s1, 2, 3)
fmt.Println(s1) // [1 2 3]
登入後複製

append() 函數會傳回新產生的切片,如果原來的切片長度不夠,則會建立一個新的數組,所以可以在切片長度為0 的情況下使用append() 函數。

三、總結

透過本文的介紹,我們了解了 Golang 切片和 append() 函數的用法。切片在 Golang 中非常重要,並且在實際開發中使用非常頻繁,掌握切片的基本用法對於 Golang 開發者來說非常重要。在使用 append() 函數時需要注意其傳回值,並且需要特別注意使用 ... 運算子將一個切片分開來新增到另一個切片中。

以上是聊聊Golang的切片和append()函數的使用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板