Go语言编程快速入门:数组

P17 go16 - 数组
更新于: 2022-01-17 13:01:23

数组

  • 固定长度,有序集合
  • 数组长度 len 函数确定
// 定义数组
var planets [8]string
// 访问数组
planets[0] = "Mercury"
planets[1] = "Venus"
planets[2] = "Earth"

earth := planets[2]
fmt.Println(earth)

数组越界

  • 如果直接写明,则编译器可以提示越界了
  • 如果是变量,则会在运行时的时候,提示 panic 的提示
panic数组越界提示

利用复合字符值来初始化数组(Composite literal)

一种给复合类型始化的紧凑语法

dwarfs :=[5]string{ "a", "b", "c", "d", "e" }
dwarfs2 :=[...]string{ "a", "b", "c", "d", "e" }

数组的遍历

  • for 循环
  • range 关键字
dwarfs := [5]string{"a", "b", "c", "d", "e"}
dwarfs2 := [...]string{"a", "b", "c", "d", "e"}

// for 循环
for i := 0; i < len(dwarfs); i++ {
  fmt.Println("normal way.")
  v := dwarfs[i]
  fmt.Println(i, v)
}

// range 关键字
for i, v := range dwarfs2 {
  fmt.Println("another way.")
  fmt.Println(i, v)
}

fmt.Println(dwarfs, dwarfs2)

数组的复制

  • 数组也是一种值,赋值即发生了 copy
  • 这里的copy即其它语言里的 deepCopy
arr := [...]string{"a", "b", "c"}
arr2 := arr

arr2[0] = "A"
fmt.Println(arr, arr2)
// [a b c] [A b c]

参考