美文网首页
Go数组类型的使用

Go数组类型的使用

作者: 喜龙爱慧 | 来源:发表于2016-06-02 14:26 被阅读516次
    森林图书馆&Lylean lee 作品

    即使在清贫的岁月,也不能失去对幸福美好的向往,那些摆脱平庸的梦总能编制我们简单的生活,为我们简单的时光点缀希望。不能说我们总要多热爱生活,但总要有一颗懂得欣赏和珍惜的心。 from《布鲁克林有棵树》

    引用于:http://wufazhuce.com/one/1358

    • 数组声明必须指明长度[number]或者用[...]声明告之Go自行计算长度
    • 数组作为形参传入函数,如果需要改变原数组元素,必须以指针类型传递。否则为值传递,是无法影响原数组元素
    • 数组可以用 常规for循环 或者 for ... range 遍历数组元素
    • 支持多维数组
    /*
       值传递:
       函数内部操作的形参变量其实是原数组的copy,
       意味着形参又申请了一块内存,存储的内容与原数组相同而已。
       形参变量的值发生改变,不会影响原数组。
    */
    func changeArr(arr [5]int) {
        arr[3] = 4
        fmt.Println(arr[3]) //4
    }
    
    /*
       指针传递:
       函数内部操作的形参变量与原数组指向的都是同一块内存区域,
       形参变量的值发生改变,会影响原数组。
    */
    func changeArrByPointer(arr *[5]int) {
        arr[3] = 4
        fmt.Println(arr[3]) //4
    }
    
    func main() {
        arrA := [5]int{1, 2, 3}
        fmt.Println(arrA[3]) //0
        changeArr(arrA)
        fmt.Println(arrA[3]) //原数组[3]的值没有发生变化,依然是0。
        changeArrByPointer(&arrA)
        fmt.Println(arrA[3]) ////原数组[3]的值发生变化,被修改为4。
    
        //利用range遍历数组
        for i, v := range arrA {
            fmt.Printf("arrA[%d]=%d\n", i, v)
        }
    
        //利用下标遍历数组
        for i, j := 0, len(arrA); i < j; i++ {
            fmt.Printf("arrA[%d]=%d\n", i, arrA[i])
        }
    }
    

    相关文章

      网友评论

          本文标题:Go数组类型的使用

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