8、数组-GOLANG

数组概念

固定长度并且有序的一种集合,用于收集同种类型的元素

声明数组并访问元素

声明两个数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import "fmt"

func main() {

var name [3]string //长度为3的string类型数组,看数组名称是为了存放姓名
var age [3]int //长度为3的int类型数组,看数组名称是为了存放年龄

name[0] = "xiu" //数组的第一个元素从0开始计数,所以n个元素最大的索引为n-1
name[1] = "小明"
name[2] = "小红"

age[0] = 18
age[1] = 7
age[2] = 8

fmt.Printf("姓名:%v\n年龄:%v", name[0], age[0])

}

注意不要索引越界,上述两个数组长度都为3,当我们访问name[3]的时候编译就会报错,千万记住索引是从0开始

快速初始化数组

planets:行星,星球

dwarfs:矮行星

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import "fmt"

func main() {

dwarfs := [5]string{
"Ceres",
"Pluto",
"Haumea",
"Makemake",
"Eris",
}
fmt.Println(dwarfs)
plants := [...]string{ //利用...不声明数组长度,让编译器为我们计算数组长度
"Mercury",
"Venus",
"Earth",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
}
fmt.Println(plants)
}

迭代/遍历数组

我们会发现上面的例子会全数打印数组,我们想要一个个打印相关元素,利用for循环实现一个个打印元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package main

import "fmt"

func main() {

dwarfs := [5]string{
"Ceres",
"Pluto",
"Haumea",
"Makemake",
"Eris",
}
plants := [...]string{
"Mercury",
"Venus",
"Earth",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
}

for i := 0; i < len(dwarfs); i++ {//常规for循环
fmt.Println(i, dwarfs[i])
}
for i, plants := range plants {//for range遍历数组
fmt.Println(i, plants)
}
}

二维数组

即数组中的元素也是数组

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import "fmt"

func main() {
var board [8][8]string //board[行][列]
board[0][0] = "r"
board[0][7] = "r"
for i := range board[1] {
board[1][i] = "p"
}
fmt.Print(board)
}