Go語言程式:在不使用庫函式的情況下刪除陣列中的元素


Go 語言中的陣列被定義為一種資料結構,用於儲存元素在連續的記憶體位置。陣列允許我們在恆定時間內搜尋和儲存元素。陣列使用索引來儲存元素,索引從 0 開始,到 n - 1 結束,其中 n 是陣列的長度。

方法 1:使用外部使用者定義函式

以下方法說明了如何使用外部函式從整數陣列中刪除特定的整數元素。

演算法

  • 步驟 1 − 匯入 fmt 包。

  • 步驟 2 − 定義名為 removeOccurrence() 的函式。

  • 步驟 3 − 在此函式中,我們檢查陣列的當前元素是否等於我們希望刪除的值。

  • 步驟 4 − 如果不等於,則我們將該元素儲存在同一陣列中,否則忽略該元素並重復此過程,直到遍歷完整個陣列。

  • 步驟 5 − 檢查完所有元素後,我們需要將最終陣列作為結果返回。

  • 步驟 6 − 開始 main() 函式。初始化一個數組併為其賦值。

  • 步驟 7 − 在螢幕上列印陣列。

  • 步驟 8 − 呼叫 removeOccurrence() 函式,並將陣列和要刪除的元素作為引數傳遞給它。

  • 步驟 9 − 將從函式獲得的結果儲存在一個名為 output 的變數中。

  • 步驟 10 − 使用 fmt.Println() 函式在螢幕上列印最終結果。

示例

在下面的程式碼中,我們使用了外部使用者定義函式來從整數陣列中刪除一個元素。

package main
import "fmt"
func removeOccurrence(nums [8]int, val int) []int {
   lenArr := len(nums)
   var k int = 0
   for i := 0; i < lenArr; {
      if nums[i] != val {
         nums[k] = nums[i]
         k++
      }
      i++
   }
   return nums[0:k]
}

func main() {
   arr1 := [8]int{11, 21, 32, 41, 54, 79, 83, 47}
   fmt.Println("The first array Arr1 is:", arr1)
   fmt.Println()
   output := removeOccurrence(arr1, 41)
   fmt.Println("The array obtained after removing the element 41 is:", output)
}

輸出

The first array Arr1 is: [11 21 32 41 54 79 83 47]

The array obtained after removing the element 41 is: [11 21 32 54 79 83 47]

方法 2:使用單個函式

在此方法中,我們將透過 2 個 Go 程式設計示例來了解刪除陣列中元素的兩種不同技術。

演算法

  • 步驟 1 − 匯入 fmt 包。

  • 步驟 2 − 開始 main() 函式。初始化一個字串陣列併為其賦值。

  • 步驟 3 − 在螢幕上列印陣列。

  • 步驟 4 − 將要刪除的值儲存在一個新變數中,並使用 for 迴圈以及 range 函式來迭代陣列。

  • 步驟 5 − 如果當前元素不等於要刪除的值,則將該值更新到陣列並繼續迴圈,直到遍歷完整個陣列。

  • 步驟 6 − 現在,將這樣獲得的新陣列複製到一個新陣列中,並使用 fmt.Println() 函式在螢幕上列印最終獲得的陣列。

示例

package main
import (
   "fmt"
)
func main() {
   originalArray := [5]string{"a", "b", "c", "c", "d"}
   fmt.Println("The original array is:", originalArray)
   val := "c"
   j := 0
   for _, v := range originalArray {
      if v != val {
         originalArray[j] = v
         j++
      }
   }
   newArray := originalArray[:j]
   fmt.Println("The new array is:", newArray)
}

輸出

The original array is: [a b c c d]
The new array is: [a b d]

示例 2

package main
import "fmt"
func main() {
   arr := []int{11, 21, 32, 41, 54, 79, 83, 47}
   fmt.Println("The given array is:", arr)
   fmt.Println()
   var val int = 32
   var j int = 0
   fmt.Println("The value to be removed is:", val)
   var res []int
   for i := 0; i < len(arr); i++ {
      if arr[i] != val {
         arr[j] = arr[i]
         j++
      }
   }
   res = arr[:j]
   fmt.Println("The array obtained after removing the element", val, "is:", res)
}

輸出

The given array is: [11 21 32 41 54 79 83 47]

The value to be removed is: 32
The array obtained after removing the element 32 is: [11 21 41 54 79 83 47]

結論

我們已經成功編譯並執行了一個 Go 語言程式,用於從陣列中刪除特定元素,並附帶示例。本文使用了三個示例,第一個程式使用外部函式從整數陣列中刪除一個整數值,而第二個程式則將邏輯應用於字串陣列。在最後一個示例中,我們展示瞭如何使用 for 迴圈從陣列中刪除元素。

更新於: 2023年2月16日

454 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告