您好,登錄后才能下訂單哦!
概念:基于數組,數組切片添加了一系列管理功能,可以隨時動態擴充存放空間,并且不會導致所管理的元素被重復復制。
創建數組切片:
方法一,基于數組:
package main import "fmt" func main() { //define an array var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //create a slice based on array var mySlice []int = myArray[:5] fmt.Println("Elements of myArray: ") for _, v := range myArray { fmt.Print(v, " ") } fmt.Println("\nElements of mySlice: ") for _, v := range mySlice { fmt.Print(v, " ") } fmt.Println() }
運行結果:
Elements of myArray:
1 2 3 4 5 6 7 8 9 10
Elements of mySlice:
1 2 3 4 5
方法二,直接創建:
Golang提供的內置函數make()可以用于靈活地創建數組切片。
創建一個初始元素個數為5的數組切片,元素初始值為0:
mySlice := make([]int, 5)
創建一個初始元素個數為5的數組切片,元素初始值為0,并預留10個元素的存儲空間:
mySlice := make([]int, 5, 10)
直接創建并初始化包含5個元素的數組切片:
mySlice := []int{1, 2, 3, 4, 5}
遍歷:
傳統遍歷:
for i:=0; i<len(mySlice); i++ {
fmt.Println("mySlice[", i, "] =", mySlice[i])
}
range遍歷:
for i, v := range mySlice {
fmt.Println("mySlice[", i, "] =", v)
}
存儲能力(capacity):
概念:元素個數和分配的空間可以是兩個不同的值。
cap():返回數組切片分配的空間大小
len():返回數組切片中當前所存儲的元素個數
package main import "fmt" func main() { mySlice := make([]int, 5, 10) fmt.Println("len(mySlice):", len(mySlice)) fmt.Println("cap(mySlice):", cap(mySlice)) }
輸出結果:
len(mySlice): 5
cap(mySlice): 10
append():
繼續新增元素,下面代碼可從尾端給mySlice加上三個元素,從而生成一個新的數組切片。
mySlice = append(mySlice, 1, 2, 3)
下面代碼直接將一個數組切片追加到另一個數組切片的末尾。
mySlice2 := []int{8, 9, 10}
mySlice = append(mySlice, mySlice2...)
基于數組切片創建數組切片:
oldSlice := []int{1, 2, 3, 4, 5}
newSlice := oldSlice[:3]
copy():
slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{5, 4, 3}
copy(slice2, slice1) //只會復制slice1的前3個元素到slice2中
copy(slice1, slice2) //復制slice2的3個元素到slice1的前三個位置
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。