数组对应的类型是Slice。切片是可以缩放的动态序列,使其功能更加灵活。但是,如果您想了解切片的工作原理,首先需要了解数组。本节我们主要讲解如何使用数组,而Slice将在《 Go语言中的切片》中进行讲解。
Go语言中的数组声明
数组声明的语法是:
var 配列変数名 [要素数]Type
语法描述如下:
- 数组变量名:声明和使用数组时的变量名。
- 元素数量:数组中的元素数量。可以是表达式,但编译时计算的结果必须是整数值,并且元素数量不能包含大小只能在运行时确定的值。
- 类型:可以使用任何基本类型,包括数组本身。如果类型本身就是数组,则可以实现多维数组。
数组的每个元素都可以通过索引下标访问。索引下标的范围是从0到数组长度减1。内置函数 len() 可以返回数组中元素的数量。
var a [3]int // 3つの整数の配列を定義します
fmt.Println(a[0]) // 最初の要素を表示する
fmt.Println(a[len(a)-1]) // 最後の要素を表示する
// インデックスと要素を表示する
for i, v := range a {
fmt.Printf("%d %d\n", i, v)
}
// 要素のみを表示する
for _, v := range a {
fmt.Printf("%d\n", v)
} 默认情况下,数组的每个元素都被初始化为与该元素类型对应的零值(数字类型为 0)。您还可以使用数组文字语法用一组值初始化数组。
var q [3]int = [3]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
fmt.Println(r[2]) // "0"
var q [3]int = [3]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
fmt.Println(r[2]) // "0" 在数组定义中,如果数组长度位置出现省略号“…”,则表示数组长度是根据初始化值的个数计算的。上面的数组 q 可以简化如下:
q := [...]int{1, 2, 3}
fmt.Printf("%T\n", q) // "[3]int"
q := [...]int{1, 2, 3}
fmt.Printf("%T\n", q) // "[3]int" [3]int 和 [4]int 是两种不同的数组类型,因为数组长度是数组类型的组成部分。由于我们需要确定数组的长度,因此数组的长度必须是一个常量表达式。在编辑阶段。
q := [3]int{1, 2, 3}
q = [4]int{1, 2, 3, 4} // コンパイルエラー:[4]int を [3]int に割り当てることができません 比较两个数组是否相等。
如果两个数组的类型相同(包括数组的长度和数组中元素的类型),可以直接使用比较运算符( ==和!= )来判断两个数组是否相等。如果两个数组相等:如果所有元素都相等,则数组相等。您无法比较两个不同类型的数组。否则,程序将无法编译。
a := [2]int{1, 2}
b := [...]int{1, 2}
c := [2]int{1, 3}
fmt.Println(a == b, a == c, b == c) // "true false false"
d := [3]int{1, 2}
fmt.Println(a == d) // コンパイルエラー:[2]int == [3]intは比較できません。 
遍历数组也和遍历切片类似,代码如下:
var team [3]string
team[0] = "hammer"
team[1] = " soldier"
team[2] = "mum"
for k, v := range team {
fmt.Println(k, v)
} 代码输出结果:
0 hammer
1 soldier
2 mum
代码说明如下:
- 第 6 行使用 for 循环来遍历 team 数组。键 k 是数组的索引,值 v 是数组中每个元素的值。
- 第 7 行输出每个键的值。




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

