Go語言程式:從陣列中刪除指定元素


在本教程中,我們將學習如何使用簡單的for迴圈方法從陣列中刪除元素。這種方法背後的邏輯是建立一個新陣列,並將要刪除的特定索引元素不新增到新陣列中。讓我們看看如何使用不同的示例來執行它。

在主函式中刪除陣列中的元素

在這種方法中,我們將整個程式在主函式內執行。將建立原始陣列和新陣列來執行從陣列中刪除元素的操作。讓我們來看一下並掌握解決此問題的方法。

演算法

步驟 1 − 在程式中宣告 main 包並匯入 fmt 包。

步驟 2 − 建立一個 main 函式,並在函式中建立一個數組,並用要從中刪除一個元素的值填充該陣列。

步驟 3 − 建立一個變數 i 並將要刪除的索引賦值給該變數。

步驟 4 − 檢查一個條件:如果索引小於 0 或值大於陣列長度,則列印索引越界。

步驟 5 − 如果條件不滿足,則建立一個名為 originalarr 的陣列和變數 j,進一步迴圈到陣列的範圍,並檢查當變數 i 的值不等於索引值時,將舊陣列的值賦值給新陣列並執行 j++。

步驟 6 − 當值相似時,這意味著要刪除索引,根據演算法,該索引值不會新增到陣列中,迴圈繼續。

步驟 7 − 迴圈終止後,我們重新切片陣列以刪除多餘的索引,並使用 fmt.Println() 函式在控制檯中列印新陣列。

示例

使用主方法從陣列中刪除元素的 Go 語言程式

package main
import ( 
   "fmt"
)
func main() {

   originalarr := [5]string{"Vatsal", "Kartik", "Ritika", "Veronica", "Isha"} //create array
   fmt.Println("The original array is:", originalarr)
   
   i := 3 //index to be deleted
   fmt.Println("The index to be deleted is:", i)
   if i < 0 || i >= len(originalarr) {
      fmt.Println("The given index is out of bounds.")
   } else {
      j := 0
      for index := range originalarr { //run a loop till end of array
      if i != index {
            originalarr[j] = originalarr[index] //assign the old array values to new array
            j++
         }
      }
      
      newarr := originalarr[:j] //reslicing array to remove extra index
      fmt.Println("The new array after deleting the element is:", newarr)
   }
}

輸出

The original array is: [Vatsal Kartik Ritika Veronica Isha]
The index to be deleted is: 3
The new array after deleting the element is: [Vatsal Kartik Ritika Isha]

使用使用者定義函式從陣列中刪除元素

在這種方法中,我們將整個程式在外部函式內執行。將建立原始陣列和新陣列來執行從陣列中刪除元素的操作。原始陣列將作為引數從主函式傳遞。讓我們看看如何解決這個問題。

演算法

步驟 1 − 在程式中宣告 main 包並匯入 fmt 包。

步驟 2 − 建立一個名為 remove_ele 的函式,該函式包含陣列作為引數,並在函式中進一步建立一個變數,並將要刪除的元素的索引賦值給該變數。

步驟 3 − 檢查一個條件:如果索引小於 0 或值大於陣列長度,則列印索引越界。

步驟 4 − 如果條件不滿足,則建立一個名為 originalarr 的陣列和變數 j,進一步迴圈到陣列的範圍,並檢查當變數 i 的值不等於索引值時,將舊陣列的值賦值給新陣列並執行 j++。

步驟 5 − 當值相似時,這意味著要刪除索引,根據演算法,該索引值不會新增到陣列中,迴圈繼續。

步驟 6 − 迴圈終止後,我們重新切片陣列以刪除多餘的索引,並使用 fmt.Println() 函式在控制檯中列印新陣列。

步驟 7 − 主函式呼叫帶有陣列作為引數的外部函式,之後整個程式執行。

示例

使用外部函式方法從陣列中刪除元素的 Go 語言程式

package main
import (
   "fmt"
)

func remove_ele(originalarr []int) {

   i := 3 //index to be deleted
   fmt.Println("The index to be deleted is:", i)
   if i < 0 || i >= len(originalarr) {
      fmt.Println("The given index is out of bounds.")
   } else {
   
      j := 0
      for index := range originalarr { 
      //run a loop till end of array
      
         if i != index {
            originalarr[j] = originalarr[index] 
            //assign old array value to new array
            j++
         }
      }
      
      newarr := originalarr[:j] 
      //reslicing array to remove extra index
      fmt.Println("The new array after deleting the element is:", newarr)
   }
   
}
func main() {
   arr := []int{10, 20, 30, 40, 50} 
   //create array
   fmt.Println("The array is:", arr)
   remove_ele(arr)
}

輸出

The array is: [10 20 30 40 50]
The index to be deleted is: 3
The new array after deleting the element is: [10 20 30 50]

結論

我們使用兩種方法執行了從陣列中刪除元素的程式。在第一種方法中,我們使用主方法刪除元素;在第二種方法中,我們使用外部方法,其中陣列作為引數透過主函式傳遞。兩種情況下都獲得了相似的輸出。因此,程式成功執行。

更新於:2023年2月13日

3K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告