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]
結論
我們使用兩種方法執行了從陣列中刪除元素的程式。在第一種方法中,我們使用主方法刪除元素;在第二種方法中,我們使用外部方法,其中陣列作為引數透過主函式傳遞。兩種情況下都獲得了相似的輸出。因此,程式成功執行。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP