6.数组
1. 数组介绍
数组是一组相同数据类型的元素集合。
数组中的每个元素可以是任意类型,例如 int
或 string
。
数组的元素数量被称为数组的长度。
在 Go 语言中,数组是固定长度的,长度是数组类型的一部分,也就是说 [5]int
和 [10]int
是不同的类型。
Go 语言中数组的另一个特点是占用内存的连续性,数组中的元素会被分配到连续的内存地址中,因此通过索引访问数组元素的速度非常快。
与数组相关的类型是 Slice
(切片),切片是可以动态增减长度的序列,功能更灵活,但理解切片首先要理解数组。
2.数组定义
使用语法 var 数组变量名 [元素数量]类型
定义数组。
例如:var a [5]int
,数组的长度必须是常量,并且长度是数组类型的一部分,因此 [5]int
和 [4]int
是不同的类型。
一旦定义,数组的长度是不可变的,但数组中的元素是可以改变的。
package main
import "fmt"
func main() {
// 定义一个长度为 5 元素类型为 int 的数组 a
var a [5]int
// 定义一个长度为 3 元素类型为 int 的数组 b 并赋值
var b [3]int
b[0] = 80
b[1] = 100
b[2] = 96
fmt.Println(a) // 输出:[0 0 0 0 0]
fmt.Println(b) // 输出:[80 100 96]
}
数组作为函数参数或赋值时是值传递,即会创建一个新的数组副本,因此修改 arr2
并不会影响原数组 arr
。
package main
import "fmt"
func main() {
var arr = [3]int{1, 2, 3}
arr2 := arr
arr2[0] = 3
fmt.Println(arr, arr2) // 输出:[1 2 3] [3 2 3]
}
3. 数组的遍历
定义一个字符串数组 a
,包含 "北京"
、"上海"
、"深圳"
三个元素。使用 for
循环,通过数组的长度 len(a)
遍历数组的每个元素。
在循环中,
fmt.Println(a[i])
逐行打印每个元素。
package main
import "fmt"
func main() {
var a = [...]string{"北京", "上海", "深圳"}
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
}
输出结果:
北京
上海
深圳
4.k.v 遍历数组
使用 for
循环结合 range
来遍历数组。
package main
import "fmt"
func main() {
var a = [...]string{"北京", "上海", "深圳"}
for index, value := range a {
fmt.Println(index, value)
}
}