在go語言中,可以利用Slice(切片)的特性來實現陣列元素的刪除操作。刪除方法:1、利用append()實作刪除,語法「append(list[:刪除索引], list[(刪除索引1):]...)」;2、利用copy()實作刪除,語法「list [:copy(list, list[索引:])]」;3、利用len()實作刪除,語法「list[:len(list)-N]」。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
在go語言中,可以利用Slice(切片)特性來實現陣列元素的刪除運算。切片(slice)是對數組的一個連續片段的引用,所以切片是一個引用類型(因此更類似於C/C 中的數組類型,或者 Python 中的list 類型),這個片段可以是整個數組,也可以是由起始和終止索引標識的一些項目的子集,需要注意的是,終止索引標識的項目不包括在切片內。
Go語言利用切片刪除數組元素
#Go語言並沒有對刪除切片元素提供專用的語法或接口,需要使用切片本身的特性來刪除元素,根據要刪除元素的位置有三種情況,分別是從開頭位置刪除、從中間位置刪除和從尾部刪除,其中刪除切片尾部的元素速度最快。 【相關推薦:Go影片教學、程式設計教學】
#從開頭位置刪除
##刪除開頭的元素可以直接移動資料指針:a = []int{1, 2, 3} a = a[1:] // 删除开头1个元素 a = a[N:] // 删除开头N个元素也可以不移動資料指針,但是將後面的資料向開頭移動,可以用append 原地完成(所謂原地完成是指在原有的切片資料對應的記憶體區間內完成,不會導致記憶體空間結構的變化):
a = []int{1, 2, 3} a = append(a[:0], a[1:]...) // 删除开头1个元素 a = append(a[:0], a[N:]...) // 删除开头N个元素也可以用copy() 函數來刪除開頭的元素:
a = []int{1, 2, 3} a = a[:copy(a, a[1:])] // 删除开头1个元素 a = a[:copy(a, a[N:])] // 删除开头N个元素
從中間位置刪除
對於刪除中間的元素,需要對剩餘的元素進行一次整體挪動,同樣可以用append 或copy 原地完成:a = []int{1, 2, 3, ...} a = append(a[:i], a[i+1:]...) // 删除中间1个元素 a = append(a[:i], a[i+N:]...) // 删除中间N个元素 a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素 a = a[:i+copy(a[i:], a[i+N:])] // 删除中间N个元素
從尾部刪除
a = []int{1, 2, 3} a = a[:len(a)-1] // 删除尾部1个元素 a = a[:len(a)-N] // 删除尾部N个元素刪除開頭的元素和刪除尾部的元素都可以認為是刪除中間元素操作的特殊情況,下面來看一個範例。
陣列刪除範例
【範例】刪除切片指定位置的元素。package main import "fmt" func main() { seq := []string{"a", "b", "c", "d", "e"} // 指定删除位置 index := 2 // 查看删除位置之前的元素和之后的元素 fmt.Println(seq[:index], seq[index+1:]) // 将删除点前后的元素连接起来 seq = append(seq[:index], seq[index+1:]...) fmt.Println(seq) }程式碼輸出結果: 程式碼說明如下:
程式設計影片! !
以上是golang數組怎麼刪除元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!