9、数组

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) // 成功
}

 

posted @ 2021-11-20 10:01  JaydenQiu  阅读(33)  评论(0)    收藏  举报