Go语言编程快速入门:数组
P17 go16 - 数组
数组
- 固定长度,有序集合
- 数组长度
len
函数确定
// 定义数组
var planets [8]string
// 访问数组
planets[0] = "Mercury"
planets[1] = "Venus"
planets[2] = "Earth"
earth := planets[2]
fmt.Println(earth)
数组越界
- 如果直接写明,则编译器可以提示越界了
- 如果是变量,则会在运行时的时候,提示 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]