Go数组类型的使用

《Go数组类型的使用》 森林图书馆&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])
    }
}
    原文作者:喜龙爱慧
    原文地址: https://www.jianshu.com/p/163663ec7e78
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞