数组的初始化
func main() { var arr [5]int arr1:=[3]int{1,2,3} arr2:=[...]int{2,3,4,5,6,7} var grid [4][5]int fmt.Println(arr,arr1,arr2,grid) } 数组的遍历 func main() { var arr [5]int arr1:=[3]int{1,2,3} arr2:=[...]int{2,3,4,5,6,7} var grid [4][5]int fmt.Println(arr,arr1,arr2,grid) for i:=0;i<len(arr1);i++ { fmt.Println(arr1[i]) } //range可以返回数组的下标 for j:=range arr1{ fmt.Println(j) } //range可以返回数组的下标及对应的值 for k,v:=range arr1{ fmt.Println(k,v) } //如果不想返回下标可以以_代替 for _,v:=range arr1{ fmt.Println(v) }
}
用range简单实现一个方法
func sum(arr [3]int) int{ sum:=0 for _,v:=range arr{ sum+=v } return sum } func main() { arr1:=[3]int{1,2,3} fmt.Println(sum(arr1)) }
数组是值类型
- [10]int 和[20]int是不同类型
- 调用func f(arr [10] int)会拷贝数组(值传递)
- 在go语言中一般不直接使用数组
package main import ( "fmt" ) //方法中改变数组值 func printArray(arr [5]int){ arr[0]=100 for _,v:=range arr{ fmt.Println(v) } } //方法中传入指针改变数组的值 func printArray1(arr *[5]int){ arr[0]=100 for _,v:=range arr{ fmt.Println(v) } } func main() { var arr [5]int arr2:=[...]int{2,3,4,5,6} fmt.Println(sum(arr1)) fmt.Println("printArray(arr):") printArray(arr) fmt.Println("printArray(arr2):") printArray(arr2) //因为是值传递所以本身的值没有改变 fmt.Println(arr,arr2) fmt.Println("printArray(arr):") printArray1(&arr) fmt.Println("printArray(arr2):") printArray1(&arr2) //指针可以实现引用传递,值被改变 fmt.Println(arr,arr2) }