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)
}
上一篇 下一篇

猜你喜欢

热点阅读