跟着google工程师学Go语言(九):Golang数组

欢迎来到:Google资深工程师深度讲解Go语言

视频地址:Google资深工程师深度讲解Go语言 -数组

容器, 它是可以包含大量条目(item)的数据结构, 例如数组、切片和 map。

以 [] 符号标识的数组类型几乎在所有的编程语言中都是一个基本主力。Go 语言中的数组也是类似的,只是有一些特点。Go 没有 C 那么灵活,但是拥有切片(slice)类型。这是一种建立在 Go 语言数组类型之上的抽象,要想理解切片我们必须先理解数组。数组有特定的用处,但是却有一些呆板,所以在 Go 语言的代码里并不是特别常见。相对的,切片确实随处可见的。它们构建在数组之上并且提供更强大的能力和便捷。

数组是具有相同 唯一类型 的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。数组的编译时值初始化是按照数组顺序完成的。

数组元素可以通过 索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。

声明的格式是:

var identifier [len]type

示例:

var arr1 [5]int //数量放在前面
arr2 := [3]int{1,3,5}  //简短定义形式,必须有初始值
arr3 := [...]int{2,4,6,8,10} //自动判断值个数
var grid [4][5]int //二维数组

fmt.Println(arr1,arr2,arr3)

fmt.Println(grid)
//for结构
for i := 0;i<len(arr3) ;i++  {
    fmt.Println(arr3[i])
}

//for-range
for i,v := range arr3{  //同时获取索引: i 和 值:v
    fmt.Println(i,v)
}

对索引项为 i 的数组元素赋值可以这么操作:arr[i] = value,所以数组是 可变的

数组遍历

for 结构
for range结构
任何地方都可以使用空白字符 _ 省略变量

sum := 0
for _,v := range numbers{ //这里只获取值:v,省略索引
    sum += v
}

数组是值类型

  • [10]int 和 [20]int 是不同类型
  • 调用func f (arr [10]int ) 会拷贝数组
  • 不直接使用数组,而使用切片 slice

参考文档,Go入门指南:数组

猜你喜欢

转载自blog.csdn.net/u010363932/article/details/81687674