数组是什么? 数组是存储一组数据,在内存中连续的一种数据结构
在Go中,数组又是什么样的呢?
数组的声明
格式
var 变量名 [长度] 变量类型
例子
声明数组,但不初始化
package main
import "fmt"
func main(){
//声明一个长度为5的 int数组
var testArray [5] int
//对数组中的每个元素赋值
testArray[0] = 1
testArray[1] = 2
testArray[2] = 3
testArray[3] = 4
testArray[4] = 5
// len():查询长度
//遍历数组中的元素
for i := 0; i < len(testArray) ; i++ {
fmt.Println(testArray[i])
}
}
/*
输出:
1
2
3
4
5
*/
声明数组的同时,初始化
package main
import "fmt"
func main(){
//声明并初始化
var testArray = [5] int{4, 3, 2, 1, 0}
// len():查询长度
for i := 0; i < len(testArray) ; i++ {
fmt.Println(testArray[i])
}
}
/*
输出:
4
3
2
1
0
*/
根据元素个数,自动初始化数组大小
package main
import "fmt"
func main(){
//声明并初始化
var testArray = [...] int{4, 3, 2, 1, 0, 55, 21}
fmt.Println("数组的长度为:", len(testArray))
// len():查询长度
for i := 0; i < len(testArray) ; i++ {
fmt.Println(testArray[i])
}
}
/*
输出:
数组的长度为: 7
4
3
2
1
0
55
21
*/
格式如下:
var 变量名 = [...] 变量类型{元素, 元素, 元素, ...}
访问数组中的元素
下标法
package main
import "fmt"
func main(){
//声明并初始化
var testArray = [...] int{4, 3, 2, 1, 0, 55, 21}
fmt.Println("访问数字4:", testArray[0])
fmt.Println("访问数字0:", testArray[4])
}
/*
输出:
访问数字4: 4
访问数字0: 0
*/
数组的下标是从 0开始计算,最大的下标是 len(数组) - 1
数组的遍历
利用 len() 遍历
package main
import "fmt"
func main(){
//声明并初始化
var testArray = [...] int{4, 3, 2, 1, 0, 55, 21}
for i := 0; i < len(testArray) ; i++ {
fmt.Print(" ", testArray[i])
}
}
/*
输出:
4 3 2 1 0 55 21
*/
利用语言范围「range」遍历
package main
import "fmt"
func main(){
//声明并初始化
var testArray = [...] int{4, 3, 2, 1, 0, 55, 21}
// _ 是占位,占的位置是代表了索引下标的值
for _, array := range testArray {
fmt.Print(" ", array)
}
}
/*
输出:
4 3 2 1 0 55 21
*/
假如不占位,那结果如下
package main
import "fmt"
func main(){
//声明并初始化
var testArray = [...] int{4, 3, 2, 1, 0, 55, 21}
for i, array := range testArray {
fmt.Println(i, " " ,array)
}
}
/*
输出:
0 4
1 3
2 2
3 1
4 0
5 55
6 21
*/
由以上所知,i 在这里代表了索引下标
二维数组
声明并遍历
package main
import "fmt"
func main(){
//声明
var testArray [2][3] int
testArray[0][0] = 1
testArray[0][1] = 11
testArray[0][2] = 111
testArray[1][0] = 2
testArray[1][1] = 22
testArray[1][2] = 222
for i := 0; i < len(testArray); i++ {
for j := 0; j < len(testArray[i]); j++ {
fmt.Print(" ", testArray[i][j])
}
fmt.Println()
}
}
/*
输出:
1 11 111
2 22 222
*/
第一个[ ]代表着行,第二个[ ]代表着列
上面的len(数组),代表着把数组有多少行,给计算出来 而len(数组[索引值]),代表着把某行的某列的长度给计算出来
数组直接初始化
package main
import "fmt"
func main(){
//声明并初始化
var testArray = [2][3] int{{1, 11, 111}, {2, 22, 222}}
for i := 0; i < len(testArray); i++ {
for j := 0; j < len(testArray[i]); j++ {
fmt.Print(" ", testArray[i][j])
}
fmt.Println()
}
}
/*
输出:
1 11 111
2 22 222
*/
欢迎大家关注下个人的「公众号」:独醉贪欢