Array 陣列

Golang 基礎: 陣列變數

陣列

指定陣列大小

var arr [5]int
arr[0] = 1
arr[1] = 2
arr[4] = 5

fmt.Println(arr) // [1 2 0 0 5]
arr := [5]int{1, 2, 3}

fmt.Println(arr)  // [1 2 3 0 0]

不指定陣列大小

arr := [...]int{1, 2, 3, 4, 5}

fmt.Println(arr)  // [1 2 3 4 5]

巢狀陣列

var arr [3][2]int
fmt.Println(arr) // [[0 0] [0 0] [0 0]]

指定巢狀陣列預設值

arr1 := [3][2]int{{1, 2}, {3, 4}, {5, 6}}
fmt.Println(arr1) // [[1 2] [3 4] [5 6]]

arr2 := [...][2]int{{1, 2}, {3, 4}, {5, 6}}
fmt.Println(arr2) // [[1 2] [3 4] [5 6]]

複製陣列

限制陣列長度

arr := [5]int{1, 2, 3, 4, 5}
// 指定要複製的陣列
var arr_copy [5]int

arr_copy = arr

arr_copy[3] = 99

fmt.Println(arr)      // [1 2 3 4 5]
fmt.Println(arr_copy) // [1 2 3 99 5]

不限制陣列長度

複製的陣列會變成傳址的方式

arr := []int{1, 2, 3, 4, 5, 6, 7}

var arr_copy []int

arr_copy = arr

arr_copy[3] = 99

fmt.Println(arr)      // [1 2 3 99 5 6 7]
fmt.Println(arr_copy) // [1 2 3 99 5 6 7]

參考資料