📌  相关文章
📜  Go 语言中的数组是值类型. - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:15:21.454000             🧑  作者: Mango

Go 语言中的数组是值类型

在 Go 语言中,数组是值类型(value type)。这意味着当数组被赋值给一个新变量时,会创建一个新的副本。这与其他一些编程语言的行为不同,如 C 语言中的数组是指针类型。

创建数组

要创建一个数组,在变量名后面加上方括号和数组长度,如下所示:

var a [5]int // 数组长度为 5,元素类型为 int

在创建数组时,可以将其初始化为一个静态值:

a := [5]int{1, 2, 3, 4, 5} // 创建一个包含 1 到 5 的数组

或者你可以使用一个更简单的方式来创建一个数组,只需要提供一些值即可,Go 会自动推断数组的长度:

a := [...]int{1, 2, 3, 4, 5} // 创建包含 1 到 5 的数组,长度由编译器推断
访问数组

要访问数组中的元素,只需要使用中括号并提供元素的索引:

fmt.Println(a[0]) // 输出: 1
fmt.Println(a[4]) // 输出: 5

要修改数组中的元素,只需要直接将其赋值即可:

a[2] = 10 // 将第三个元素赋值为 10
fmt.Println(a) // 输出: [1 2 10 4 5]
数组是值类型

如前所述,数组是值类型。这意味着当将数组赋值给另一个变量时,会创建一个新数组的副本:

a := [5]int{1, 2, 3, 4, 5}
b := a // 创建 a 的副本并将其赋值给变量 b
b[2] = 10 // 修改变量 b 中的元素
fmt.Println(a) // 输出: [1 2 3 4 5],a 中的元素未改变
fmt.Println(b) // 输出: [1 2 10 4 5],b 中的元素已更改

此外,当将数组传递给函数时,也会创建一个新的数组副本。这可能会导致在处理大型数组时出现性能问题,因为复制整个数组可能非常耗时和耗费内存。

总结

在 Go 语言中,数组是值类型。在创建数组时,可以将其初始化为一个静态值或使用自动推断的长度。要访问数组中的元素,请使用中括号加索引。要将数组赋值给另一个变量,请记住将创建一个新的数组副本。