zhcn 编程语言 Golang Golang 介绍 非公開: Go语言数组详解

Go语言数组详解

数组是特定类型元素的固定长度序列,数组由零个或多个元素组成。数组的长度是固定的,因此在 Go 中很少直接使用数组。

数组对应的类型是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 行输出每个键的值。

《Go语言数组详解》浅显易懂的讲解!您必须观看的最佳 2 个视频

【Go言語 超入門コース】08.配列|変数を箱。配列をロッカーに例えて解説します【プログラミング初心者向け入門講座】
https://www.youtube.com/watch?v=pMBgsLjSl70&pp=ygUqIEdv6KiA6Kqe44Gu6YWN5YiX44Gu6Kmz44GX44GE6Kqs5piOJmhsPUpB
【Go言語 超入門コース】06.変数 |変数は、例えるなら「箱」のこと。箱にデータを入れておくことができます【プログラミング初心者向け入門講座】
https://www.youtube.com/watch?v=yYpMaSHiDpk&pp=ygUqIEdv6KiA6Kqe44Gu6YWN5YiX44Gu6Kmz44GX44GE6Kqs5piOJmhsPUpB
数组是特定类型元素的固定长度序列,数组由零个或多个元素组成。数组的长度是固定的,因此在 Go 中很少直接使用数组。

数组对应的类型是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 行输出每个键的值。

《Go语言数组详解》浅显易懂的讲解!您必须观看的最佳 2 个视频

【Go言語 超入門コース】08.配列|変数を箱。配列をロッカーに例えて解説します【プログラミング初心者向け入門講座】
https://www.youtube.com/watch?v=pMBgsLjSl70&pp=ygUqIEdv6KiA6Kqe44Gu6YWN5YiX44Gu6Kmz44GX44GE6Kqs5piOJmhsPUpB
【Go言語 超入門コース】06.変数 |変数は、例えるなら「箱」のこと。箱にデータを入れておくことができます【プログラミング初心者向け入門講座】
https://www.youtube.com/watch?v=yYpMaSHiDpk&pp=ygUqIEdv6KiA6Kqe44Gu6YWN5YiX44Gu6Kmz44GX44GE6Kqs5piOJmhsPUpB