C語言中文網 目錄
首頁 > Go語言教程 > Go語言容器 閱讀:6,633

Go語言從切片中刪除元素

Go 語言并沒有對刪除切片元素提供專用的語法或者接口,需要使用切片本身的特性來刪除元素。示例代碼如下:
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)
代碼輸出結果:
[a b] [d e]
[a b d e]
  • 第 1 行,聲明一個整型切片,保存含有從 a 到 e 的字符串。
  • 第 4 行,為了演示和講解方便,使用 index 變量保存需要刪除的元素位置。
  • 第 7 行中:seq[:index] 表示的就是被刪除元素的前半部分,值為:
    [1 2]
    seq[index+1:] 表示的是被刪除元素的后半部分,值為:
    [4 5]
  • 第 10 行使用 append() 函數將兩個切片連接起來。
  • 第 12 行,輸出連接好的新切片。此時,索引為 2 的元素已經被刪除。

代碼的刪除過程可以使用下圖來描述。

圖:切片刪除元素的操作過程

Go 語言中切片刪除元素的本質是:以被刪除元素為分界點,將前后兩個部分的內存重新連接起來。

提示

Go 語言中切片元素的刪除過程并沒有提供任何的語法糖或者方法封裝,無論是初學者學習,還是實際使用都是極為麻煩的。

連續容器的元素刪除無論是在任何語言中,都要將刪除點前后的元素移動到新的位置。隨著元素的增加,這個過程將會變得極為耗時。因此,當業務需要大量、頻繁地從一個切片中刪除元素時,如果對性能要求較高,就需要反思是否需要更換其他的容器(如雙鏈表等能快速從刪除點刪除元素)。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo