array 宣告與操作
陣列Array 宣告
Array 宣告
陣列在初始化時必須指定大小,[...]也是指定大小的意思
陣列為按值傳遞的,函式內對陣列的值的改變不影響初始陣列
陣列作為函式引數時,必須指定引數陣列的大小,且傳入的陣列大小必須與指定的大小一致
不可以使用append
var arr1 [5]int
//聲明大小為5的陣列,預設初始值為[0,0,0,0,0]
arr2 := [5]int{1}
//宣告並初始化了一個大小為5的陣列的第一個元素,初始化後值為[1,0,0,0,0]
arr3 := [...]int{1, 2, 3}
//通過...自動獲取陣列長度,根據初始化的值的數量將大小初始化為3,初始化後值為[1,2,3]
arr4 := [...]int{4: 1}
//指定序號為4的元素的值為1,通過...自動獲取長度為5,初始化後值為[0,0,0,0,1]
走訪array
注意不可以直接在range中修改元素,若要修改陣列中的元素,要以索引走訪陣列,再修改陣列的元素的值(跟slice一樣)
package main
import "fmt"
func ModifyArray(arr [5]int) {
arr[0] = 5
fmt.Println(arr) // [5,0,0,0,1]
}
func main() {
a := [...]int{4: 1} //陣列為按值傳遞的,函式內對陣列的值的改變不影響初始陣列
ModifyArray(a)
fmt.Println(a) // [0,0,0,0,1]
b := a
b[0] = 88
fmt.Println("b:", b) //修改b也不會影響到b
fmt.Println("a:", a)
fmt.Println("mo arr")
arr := [5]int{1, 2, 3, 4, 5}
for i, e := range arr {
fmt.Println(fmt.Sprintf("%d: %d", i+1, e))
e = e * e //不可以使用range中修改元素
}
fmt.Println(arr)
for i := 0; i < len(arr); i++ {
arr[i] = arr[i] * arr[i] //若要修改陣列中的元素,要以索引走訪陣列,再修改陣列的元素的值
}
fmt.Println(arr)
//arr = append(arr, 1)//invalid argument: arr (variable of type [5]int) is not a slice
}
Last updated