Go 中數組屬於基本類型,他們之間的賦值 是值傳遞/值拷貝;
Go語言中,區別一個變量是數組還是切片,就看有沒有定義長度;
func main() {
array1 := [3]int{}
array2 := [2]int{1,2}
array3 := [2]int{4,5}
//array2 = array1 //報錯! Cannot use 'array1' (type [3]int) as type [2]int in assignment
array2 = array3
array3[0] = 6
fmt.Println(array1, array2, array3)
//輸出:[0 0 0] [4 5] [6 5]
//Go 中,數組屬於基本類型,他們直接的賦值 是值傳遞/值拷貝
//切片
//切片並不存在任何元素而只是對現有數組的引用 (是指針傳遞/指針拷貝)
//都有哪些方法可以創建一個切片?
//1。 通過數組創建一個切片
array10 := [3]int{1,2,3}
//將數組下標從1處 到下標2處 的元素轉化爲一個切片(前閉後開)
slice10 := array10[1:2]
fmt.Println(array10, slice10)
//輸出:[1 2 3] [2]
//2。直接聲明一個切片
//記住 在Go語言中,區別一個變量是數組還是切片,就看有沒有定義長度。
//有定義長度就是數組 如:array10; 沒有定義長度就是切片 如:slice2
slice2 := []int{1,2,3}
fmt.Println(reflect.TypeOf(array10), reflect.TypeOf(slice2))
//輸出:[3]int []int
//3。通過make 函數創建一個切片
//[]int 指定切片的類型; 3是切片的長度;6是切片的容量
slice3 := make([]int, 3, 6)
fmt.Println(slice3, reflect.TypeOf(slice3))
// 輸出:[0 0 0] []int
//4。通過切片生成一個切片
slice4 := []int{1,2,3,4,5,6}
slice5 := slice4[0:1]
fmt.Println(reflect.TypeOf(slice4), reflect.TypeOf(slice5))
//[]int []int
}