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 函式的幫助下從切片中移除一個元素。這兩個示例都給出相似的輸出。因此,程式成功執行。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP