Go語言程式:從切片中移除元素


在本教程中,我們將學習如何使用各種示例從切片中移除元素。切片就像陣列一樣,是一系列元素的序列。陣列是固定長度的元素序列,而切片是動態陣列,這意味著它的值不是固定的,可以更改。切片比陣列更高效、更快,而且它們是按引用傳遞而不是按值傳遞。讓我們透過示例來理解。

語法

func copy(dst, str[] type) int

Go語言中的copy函式用於將一個源陣列的值複製到目標陣列,並返回複製的元素數量作為結果。它以兩個陣列作為引數。

func append(slice, element_1, element_2…, element_N) []T

append 函式用於向陣列切片新增值。它接受多個引數。第一個引數是要新增值的陣列,後面跟著要新增的值。然後,該函式返回包含所有值的最終陣列切片。

演算法

  • 步驟 1 − 建立一個名為 main 的包,並在程式中宣告 fmt(格式化包),其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 建立一個 main 函式,在該函式中建立一個切片,並使用 append 函式向切片中新增值。

  • 步驟 3 − 將切片列印到控制檯,以瞭解原始切片。

  • 步驟 4 − 使用切片和要移除的索引作為引數,從 main 函式中呼叫 remove_ele 函式。

  • 步驟 5 − 在 remove_ele 函式中,首先檢查索引是否越界。

  • 步驟 6 − 如果索引越界,則在控制檯上列印相應的語句;如果不是越界,則使用內建的 copy 函式將索引之後的元素向後移動一位。

  • 步驟 7 − 然後重新切片,移除使用 copy 函式生成的額外索引。

  • 步驟 8 − 返回比其大小小 1 的切片,以便可以忽略多餘的元素。

  • 步驟 9 − 使用 fmt.println() 函式列印輸出,其中 ln 指的是換行。

  • 步驟 10 − 需要注意的是,元素實際上並沒有從記憶體中刪除。

  • 步驟 11 − 它被移動以填補空白,以滿足問題的目的。

  • 步驟 12 − 這裡再次重新切片是為了移除多餘的元素,並且所做的更改也會反映在原始切片中。

示例

在這個方法中,我們將使用內建的 copy 函式從切片中移除一個元素。這裡元素不會從記憶體中刪除。新的值將被複制到其位置以實際執行所需的操作。輸出值將使用 Go 語言中的列印語句 fmt.Println() 函式列印。

package main
import "fmt"
func main() {

   // Create a slice of integers
   var Slice []int
   Slice = append(Slice, 10) // create slice using append function
   Slice = append(Slice, 20)
   Slice = append(Slice, 30)
   Slice = append(Slice, 40)
   Slice = append(Slice, 50)

   fmt.Println("The slice before removing element is:", Slice) 

   Slice = remove_ele(Slice, 1)
   fmt.Println("The index of element to be removed is:", 1)

   fmt.Println("The slice after removing element is: ")
   fmt.Println(Slice)
}

func remove_ele(Slice []int, index int) []int {
   // check whether the index is out of bounds or not
   if index < 0 || index >= len(Slice) {
      fmt.Println("The index is out of bounds")
   }

   copy(Slice[index:], Slice[index+1:])

   // Reslice the slice to remove the last element
   return Slice[:len(Slice)-1]
}

輸出

The slice before removing element is: [10 20 30 40 50]
The index of element to be removed is: 1
The slice after removing element is: 
[10 30 40 50]

結論

我們透過一個示例執行了搜尋切片元素的程式。在這個特定示例中,我們使用自定義函式在 copy 函式的幫助下從切片中移除一個元素。這兩個示例都給出相似的輸出。因此,程式成功執行。

更新於:2023年1月17日

885 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.