美文网首页
Go的数组和指针

Go的数组和指针

作者: MaxZing | 来源:发表于2019-05-16 15:24 被阅读0次

    一、 定义数组

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        //空数组
        var arr1 [10]int
        //:=定义Array,必须初始化
        arr2 := [5]int{1, 2, 3, 4, 5}
        //自由长度
        arr3 := [...]int{1, 2, 3}
        //二维数组
        var arrInArr [3][4]int
        fmt.Println(arr1, arr2, arr3, arrInArr)
    }
    
    

    二、 遍历数组

    1. 下标遍历
    // 下标遍历
    func main() {
    
        //:=定义Array,必须初始化
        arr2 := [5]int{1, 2, 3, 4, 5}
        for i := 0; i < len(arr2); i++ {
            fmt.Println(arr2[i])
        }
    }
    
    1. range遍历(index)
    func main() {
        // range遍历(index)
        arr2 := [5]int{1, 2, 3, 4, 5}
        for index:= range arr2{
            fmt.Println(index)
        }
    }
    
    1. range遍历(index,value)
    func main() {
        // range遍历(index,value)
        arr2 := [5]int{1, 2, 3, 4, 5}
        for index, value := range arr2 {
            fmt.Println(index, value)
        }
    }
    
    1. range遍历(value)
    func main() {
        // range遍历(value), Go不允许定义不使用的变量,所以用下划线代替
        arr2 := [5]int{1, 2, 3, 4, 5}
        for _, value := range arr2 {
            fmt.Println( value)
        }
    }
    

    三、Go语言中Array是值类型

    这意味着,Array传递到其他函数时,在其他函数的操作不会影响传递前的值
    举个例子

    func main() {
        arr3 := [3]int{1, 2, 3}
        
        fmt.Println("测试前", arr3)
        testValue(arr3)
        fmt.Println("测试后", arr3)
    
    }
    
    func testValue(araya [3]int) {
        //函数内部,修改第一个元素值
        araya[0] = 100
        fmt.Println("测试中", araya)
    }
    

    测试结果:


    所以数据是copy到下一个函数的,想要引用传递,则需要指针

    四、指针

    Go 中的指针是不参与计算的,单纯的表示变量的位置

    1. 指针用于引用传递
      首先,上面的代码做一个变化:
    func main() {
        arr3 := [3]int{1, 2, 3}
        fmt.Println("测试前", arr3)
        testValue(&arr3)
        fmt.Println("测试后", arr3)
    
    }
    
    func testValue(araya *[3]int) {
        //函数内部,修改第一个元素值
        araya[0] = 100
        fmt.Println("测试中", araya)
    }
    
    

    新结果:


    1. 指针的定义方式
      由上面代码可以看出指针的定义方式就是在普通类型前面加一个*

    赋值就是在对应类型的值前面加&,取出地址。

        arr3 := [3]int{1, 2, 3}
        var araya *[3]in = &arr3
    

    喜欢请点个赞,

    转载请注明出处:https://www.jianshu.com/u/4915ed24d1e3

    如有错误,请务必指正!谢谢!

    我的博客:https://xzing.github.io/

    相关文章

      网友评论

          本文标题:Go的数组和指针

          本文链接:https://www.haomeiwen.com/subject/zuasoqtx.html