GO語言學習:切片和陣列
阿新 • • 發佈:2018-12-04
1.陣列、切片
陣列的長度是固定的,切片的長度是可變長的
陣列的長度在宣告時就必須給定,並且之後不會再變化,陣列的長度是其型別的一部分,比如[1]string和[2]string 不是相同的陣列型別.
切片可以看作是對陣列的封裝,每一個切片的底層的資料結構一定包含一個數組,陣列可以被叫做一個切片的底層陣列,切片可以看作是對陣列某個連續片段的引用.
GO的引用型別:切片,通道,字典,函式型別.
GO的值型別 : 陣列,基礎資料型別,結構體型別
GO中傳的是值還是引用,看型別就可以區分.
2.len 、cap函式
可以使用len取得到陣列和切片的大小和容量,陣列的大小等於容量,切片的容量大於等於大小.
3.example
package main
import "fmt"
func main() {
s1 := make([]int, 5)
fmt.Printf("The length of s1: %d\n", len(s1))
fmt.Printf("The capacity of s1: %d\n", cap(s1))
fmt.Printf("The value of s1: %d\n", s1)
s2 := make([]int, 5, 8)
fmt.Printf("The length of s2: %d\n", len(s2))
fmt.Printf("The capacity of s2: %d\n", cap(s2))
fmt.Printf("The value of s2: %d\n", s2)
}
執行結果:
The length of s1:5
The capacity of s1:5
The value of s1:[0 0 0 0 0]
The length of s2:5
The capacity of s2:8
The value of s2:[0 0 0 0 0 ]