GO语言基础教程7——数组
数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:
// 定义一个长度为3元素类型为int的数组a
var a [3]int
数组定义
var 数组变量名 [元素数量]数据类型
注意:数组的长度必须为常量,且长度为数据类型的一部分。
举个例子:
var a [3]int
var b [4]int
a = b
//不可以这样做,因为此时a和b是不同的类型
/a的数据类型为[3]int,b的数据类型为[4]int,因此不能直接操作
数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1。
数组的初始化
数组的初始化也有很多方式。
方法一
确定长度时对数组初始化。
func main() {
var arr = [3]int
var arr1 = [2]string{"likuis","ok"}
fmt.println(arr) // 0 0 0
fmt.println(arr1) // likuis ok
}
方法二
编译器自动识别长度对数组初始化。
func main() {
var arr = [...]int
var arr1 = [...]string{"likuis","ok"}
fmt.println(arr) // 空
fmt.println(arr1) // likuis ok
}
方法三
可以通过索引值来对数组初始化。
func main() {
var arr = [...]int{1:1,3:3}
fmt.println(arr) // 0 1 0 3
}
数组遍历
遍历数组a有以下两种方法:
func main() {
var a = [...]string{"likuis", "good", "ok"}
// 方法1:for循环遍历
for i := 0; i < len(a); i++ {
fmt.Println(i,a[i])
}
// 方法2:for range遍历
for index, value := range a {
fmt.Println(index, value)
}
//输出:
//1 likuis
//2 good
//3 ok
}
多维数组
Go语言是支持多维数组的,以二维数组为例(数组中又嵌套数组)。
二维数组定义
func main() {
a := [3][2]string{
{"likuis", "good"},
{"tom", "good"},
{"yomi", "bad"},
}
fmt.Println(a) //[[likuis good] [tom good] [yomo bad]]
fmt.Println(a[2][1]) //支持索引取值:yomi
}
二维数组遍历
func main() {
a := [3][2]string{
{"likuis", "good"},
{"tom", "good"},
{"yomi", "bad"},
}
for _,value := range a {
for _,value1 := range value {
fmt.print(value1)
}
fmt.println()
}
}
//输出:
//likuis good
//tom good
//yomi bad
注意:多维数组只有第一层可以使用...来让编译器推导长度。
例如:
//支持的写法
a := [...][2]string{
{"likuis", "good"},
{"tom", "good"},
{"yomi", "bad"},
}
//不支持多维数组的内层使用...
b := [3][...]string{
{"likuis", "good"},
{"tom", "good"},
{"yomi", "bad"},
}
课后练习
1、求数组[1, 3, 5, 7, 8]所有元素的和
2、找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。