Go语言学习之——数组
2018-04-10 本文已影响0人
星空_ad64
1、基础
var arr1 [5]int
arr2 := [3]int{1, 3, 5}
arr3 := [...]int{2, 4, 6, 8} //编译器来数到底有多少个
var grid [4][5]int
2、数组遍历
package main
import "fmt"
func main() {
var arr1 [5]int
arr2 := [3]int{1, 3, 5}
arr3 := [...]int{2, 4, 6, 8} //编译器来数到底有多少个
var grid [4][5]int //初始值为0
for i:=0; i< len(arr3); i++ {
fmt.Println(arr3[i])
}
//使用range遍历
for i:=range arr3{
fmt.Println(arr3[i])
}
//range可以返回两个值,下标和值
for i,v := range arr3{
fmt.Println(i,v)
}
//省略下标
for _,v := range arr3{
fmt.Println(v)
}
}
3、数组作为函数参数时,会拷贝数组,值类型
package main
import "fmt"
//arr [5]int确定了数组长度
func printArray( arr [5]int ){
arr[0] = 100
for i,v := range arr{
fmt.Println(i,v)
}
}
func main() {
var arr1 [5]int
printArray(arr1)
fmt.Println(arr1)
}
printArray(arr1)的output:
0 100
1 0
2 0
3 0
4 0
fmt.Println(arr1)的output:
[0 0 0 0 0]
可以看出,函数内改变数组值,并不影响函数外数组
4、也可以把数组地址作为参数,那么函数内修改数组值,函数外也会变,一般不用(一般会使用切片)
package main
import "fmt"
//arr [5]int确定了数组长度
func printArray( arr *[5]int ){
arr[0] = 100 //比较灵活,不需要写 *
for i,v := range arr{
fmt.Println(i,v)
}
}
func main() {
var arr1 [5]int
printArray(&arr1)
fmt.Println(arr1)
}