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])
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 集合类型: Swift,和其他现代编程语言一样,有内置的集合类型数组(Array)和字典(Dictionary),...
    小松树先生阅读 4,768评论 0 2
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,149评论 1 51
  • 日本北海道有个偏远的小镇叫做上白滝(long)站,由于人口锐减,乘客越来越少,车站运营日渐亏损。铁路公司三年前计划...
    要撸阅读 4,260评论 2 7
  • “自动驾驶” 与 “手动驾驶” 本是汽车领域的专业术语,记得考驾驶证的时候,教练有专门讲述了这两者的区别,大意是:...
    冰上之路阅读 4,649评论 2 4
  • 韩寒的“一个”App里被挑选进入这第一本文集的文章,风格都非常相近。 我发现我喜欢上了诗歌这种文体。至今不是很理解...
    C彳C亍C阅读 4,110评论 0 1