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