数组是具有固定数量的元素的序列,而切片是对数组的一个连续片段的引用。切片是Go中常用的数据结构
数组(Array)
数组是一个具有固定长度且元素类型相同的序列。在Go中,数组的长度是其类型的一部分,因此[5]int
和[10]int
是不同的数组类型。数组的长度在声明时必须指定,并且之后不能改变。
数组的声明和初始化
// 声明一个包含5个int类型元素的数组
var arr [5]int
// 使用数组字面量初始化数组
arr := [5]int{1, 2, 3, 4, 5}
// 数组的长度可以省略,由初始化值的数量决定
arr := [...]int{1, 2, 3, 4, 5}
数组的访问和遍历
// 访问数组元素
fmt.Println(arr[0]) // 输出第一个元素
// 遍历数组
for i, v := range arr {
fmt.Println(i, v) // i是索引,v是元素的值
}
数组是值类型
在Go中,数组是值类型,意味着当数组赋值给另一个变量或作为函数参数传递时,会复制整个数组。这也意味着修改副本不会影响原始数组。
func main() {
arr := [3]int{1, 2, 3}
modifyArray(arr)
fmt.Println(arr) // 输出:[1 2 3],原始数组未改变
}
func modifyArray(a [3]int) {
a[0] = 100
}