Go語言程式實現切片
Go語言中的切片是一個動態陣列,用於新增無法新增到固定大小陣列中的額外元素。本文將透過兩個示例演示切片的使用。在兩個示例中,都對切片執行了各種操作來展示其工作原理。第一個示例建立了一個字串切片,第二個示例建立了一個整數切片。讓我們透過示例瞭解這些操作,以獲得對該概念的清晰理解。
語法
funccopy(dst, str[] type) int
Go語言中的`copy`函式用於將一個源陣列的值複製到目標陣列,並返回已複製的元素數量作為結果。它以兩個陣列作為引數。
func make ([] type, size, capacity)
Go語言中的`make`函式用於建立陣列/對映,它接受要建立的變數型別、其大小和容量作為引數。
funcappend(slice, element_1, element_2…, element_N) []T
`append`函式用於向陣列切片新增值。它接受多個引數。第一個引數是要新增值的陣列,後跟要新增的值。然後,該函式返回包含所有值的陣列的最終切片。
演算法
建立一個`main`函式,並在該函式中使用`make`函式(一種內建函式)建立一個字串元素的切片。
在此步驟中,使用索引設定切片中的值,在切片中設定三個值。
使用`fmt`包中的`Println`函式在控制檯上列印切片元素。
然後,使用`append`函式(Go語言中的另一個內建函式)向切片中追加值。
以與之前步驟相同的方式在控制檯上列印更新後的切片。
然後,切片該切片並在控制檯上列印它。
最後,迭代巧克力切片直到其範圍,並在每次迭代中使用`Println`函式(其中`ln`表示換行)列印索引和該索引處的值。
示例 1
在此示例中,我們將建立一個字串型別的切片,並透過首先設定切片中的值、追加新值、切片切片然後迭代它來操作切片。所有輸出都將使用`fmt`包列印。
package main
import "fmt"
func main() {
// create a slice with an initial capacity of 3
slice := make([]string, 3)
fmt.Println("empty slice:", slice)
// set values to the slice
slice[0] = "munch"
slice[1] = "bourbon"
slice[2] = "perk"
fmt.Println("set slice:", slice)
slice = append(slice, "Dairy milk")
fmt.Println("appended slice:", slice)
sliced := slice[1:4]
fmt.Println("sliced slice:", sliced)
// iterate over the slice
for i, chocolates := range slice {
fmt.Printf("index %d, value %s\n", i, chocolates)
}
}
輸出
empty slice: [ ] set slice: [munch bourbon perk] appended slice: [munch bourbon perk Dairy milk] sliced slice: [bourbon perk Dairy milk] index 0, value munch index 1, value bourbon index 2, value perk index 3, value Dairy milk
示例 2
在此示例中,將像在前面的示例中一樣建立一個切片,但這裡將在切片中設定整數,然後像切片一樣對其進行操作,切片將被切片,然後使用內建函式將元素新增到切片中,並將建立一個新的複製切片。
//Golang program to implement slices
package main
import "fmt"
func main() {
slice := []int{10, 20, 30, 40, 50}
fmt.Println("initial slice:", slice)
sliced := slice[1:4]
fmt.Println("sliced slice:", sliced)
slice[2] = 11
slice[4] = 22
fmt.Println("modified slice:", slice)
sliced[1] = 44
fmt.Println("modified sliced slice:", sliced)
slice = append(slice, 66)
fmt.Println("appended slice:", slice)
copySlice := make([]int, len(slice))
copy(copySlice, slice)
fmt.Println("copied slice:", copySlice)
}
輸出
initial slice: [10 20 30 40 50] sliced slice: [20 30 40] modified slice: [10 20 11 40 22] modified sliced slice: [20 44 40] appended slice: [10 20 44 40 22 66] copied slice: [10 20 44 40 22 66]
結論
我們使用兩個示例執行並編譯了實現切片的程式。在兩個示例中,我們都透過插入新元素、複製切片、切片切片來演示了切片的使用。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP