AI智能
改变未来

golang基础小记(6)——数组:定义、初始化、遍历


Array数组

定义

数组是同一种数据类型元素的集合。 在Go语言中,数组声明时必须指定元素类型和长度。使用时只可以修改元素值,不可修改长度。不同长度或元素类型的数组属于不同的类型。

var a1 [3]bool // 定义了元素类型是bool,长度为3的数组var a2 [4]bool// 输出数组类型,可见数组类型由元素类型和长度共同决定fmt.Printf(\"%T %T\", a1, a2) // [3]bool [4]bool

一维数组初始化

  1. 直接声明可以将元素默认初始化为对应类型的零值。
var a1 [3]boolfmt.Println(a1) // [false false false]
  1. 使用初始化列表来设置元素值,如果列表元素个数少于数组长度,则超出部分初始化为零值。
var a3 = [3]int{1, 2, 3}fmt.Println(a3) // [1 2 3]var a4 = [5]int{1, 2, 3}fmt.Println(a4) // [1 2 3 0 0]
  1. 利用初始化列表来决定数组长度,编译器会根据初始化列表中元素个数来推断数组长度。
var a5 = [...]int{1, 2, 3}fmt.Printf(\"%T\\n\", a5) // [3]int
  1. 初始化指定索引位置,未指定的元素初始化为零值
var a6 = [5]int{2: 3, 4: 5}fmt.Println(a6) // [0 0 3 0 5]

一维数组遍历

  1. 索引遍历
var a7 = [...]int{5, 4, 3, 2, 1}for i := 0; i < len(a7); i++ {fmt.Printf(\"%d \", a7[i])} // 5 4 3 2 1
  1. for range 遍历
var a7 = [...]int{5, 4, 3, 2, 1}for _, v := range a7 {fmt.Printf(\"%d \", v)} // 5 4 3 2 1

二维数组

初始化方式与一维数组类似。

  1. 直接声明时元素默认初始化为零值
var a8 [3][2]intfmt.Println(a8) // [[0 0] [0 0] [0 0]]
  1. 使用初始化列表
var a9 = [3][2]int{{1, 2},{3, 4},{5, 6},}fmt.Println(a9) // [[1 2] [3 4] [5 6]]

初始化列表元素个数不够时,多出部分初始化为零值

var a10 = [3][2]int{{1, 2},{3},}fmt.Println(a10) // [[1 2] [3 0] [0 0]]
  1. 利用初始化列表决定第一层长度。注意只能省略第一层长度
var a11 = [...][2]int{{1, 2},{3},{5, 6},}fmt.Printf(\"%T\\n\", a11) // [3][2]intfmt.Println(a11)        // [[1 2] [3 0] [5 6]]

二维数组的遍历同一维数组类似,只是需要两层 for 循环。
可从二维数组类推到多维数组。

*T表示指针数组,*
T表示数组指针

参考:https://www.liwenzhou.com/posts/Go/05_array/

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » golang基础小记(6)——数组:定义、初始化、遍历