package main
import "fmt"
// 数组作为参数传递,长度一定要达到要求
func acceptArr(a [5]int) {
fmt.Println("测试数组长度要求",a)
}
// go 是值传递,函数里改变数组并不影响原来的值
func changeArr(a [5]int) {
a[0] = 999
}
// 指针方式改变数组的值
func changeArr1(a *[5]int) {
a[0] = 999
}
func main() {
// 一维数组
var arr1 [5]int // int类型的数组,长度为5
arr2 := [3]int{1,2,3} // int类型数组,长度为3,值为1,2,3
arr3 := [...]int{1,1,1,1,1} // int类型数组,长度不固定,值为....
fmt.Println(arr1)
fmt.Println(arr2)
fmt.Println(arr3)
// 二维数组
var grid [2][3]bool // bool类型数组,2维数组,每个数组有3个元素
fmt.Println(grid)
// 正常数组遍历
for i := 0; i < len(arr3); i++ {
fmt.Println(arr3[i])
}
// range 方法遍历
for i,v := range arr2 { // i是index,v是value
fmt.Println(i,v)
}
// range 方法遍历(省略index)
for _,v := range arr2 {
fmt.Println(v)
}
acceptArr(arr3) // 正常
//acceptArr(arr2) // 错误,长度达不到要求
// 尝试改变数组值
changeArr(arr3)
fmt.Println("尝试改变数组值",arr3) // 失败
// 指针方式改变数组
changeArr1(&arr3)
fmt.Println("尝试改变数组值",arr3) // 成功
}