1.二维数组快速入门
package main
import (
"fmt"
)
func main() {
//二维数组的演示案例
/**
0 0 0 0 0
0 0 1 0 0
2 0 4 9 0
0 0 0 0 6
*/
//1.定义一个二维数组
var arr [4][5]int
//赋初值
arr[1][2] = 1
arr[2][0] = 2
arr[2][2] = 4
arr[2][3] = 9
arr[3][4] = 6
//遍历二维数组
for i := 0; i < 4; i++ {
for j := 0; j < 5; j++ {
fmt.Print(arr[i][j], " ")
}
fmt.Println()
}
}
2.二维数组的使用方式
(1).先声明/定义,再赋值
语法: var 数组名 [大小][大小]类型
比如: var arr [2][3]int,然后再赋值
案例:
var arr2 [2][3]int
arr2[1][1] = 10
fmt.Println(arr2)
二维数组在内存的存在形式
(2).直接初始化
语法:
var 数组名 [大小][大小]类型 = [大小][大小]类型{{初始值1}, {初始值2},...}
赋值的时候,也是有初始值的(int => 0, string => '', bool => false)
案例:
var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}} fmt.Println("arr3=", arr3)
说明: 二维数组在声明/定义时也对应有四种写法(和一维数组类似)
var 数组名 [大小][大小]类型 = [大小][大小]类型{{初始值1}, {初始值2},...}
var 数组名 [大小][大小]类型 = [...][大小]类型{{初始值1}, {初始值2},...}
var 数组名 = [大小][大小]类型{{初始值1}, {初始值2},...}
var 数组名 = [...][大小]类型{{初始值1}, {初始值2},...}
3.二维数组的遍历
(1).双层for循环遍历
(2).for-range方式遍历
package main
import (
"fmt"
)
func main() {
//演示二维数组的遍历
var arr3 [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
//方式一: for循环
for i := 0; i < len(arr3); i++ {
for j := 0; j < len(arr3[i]); j++ {
fmt.Printf("%v\t", arr3[i][j])
}
fmt.Println();
}
//方式二:for-range
for i,value := range arr3 {
for j, v := range value {
fmt.Printf("arr[%v][%v]=%v\t", i, j, v)
}
fmt.Println();
}
}
//1 2 3
//4 5 6
//arr[0][0]=1 arr[0][1]=2 arr[0][2]=3
//arr[1][0]=4 arr[1][1]=5 arr[1][2]=6
4.应用案例
package main
import (
"fmt"
)
func main() {
/**
定义一个二维数组,用于保存三个班,每个班5名学生成绩,
并求出每个班的平均分,以及所有班平均分
*/
//1.定义一个二维数组
var scores [3][5]float64
//循环输入成绩
for i := 0; i < len(scores); i++ {
for j := 0; j < len(scores[i]); j++ {
fmt.Printf("请输入第%v个班第%v个学生成绩:\n", i + 1, j + 1)
fmt.Scanln(&scores[i][j])
}
}
fmt.Println(scores)
fmt.Println()
//求出每个班的平均分,以及所有班平均分
totalAll := 0.0 //定义一个变量,用于累计所有班级的总分
num := 0 // 定义一个变量,用于计算所有学生人数
for i, val := range scores {
sum := 0.0 //定义一个变量,用于累计各个班的总分
for _, v := range val {
sum += v
num++
}
totalAll += sum
fmt.Printf("第%v个班平均成绩:%v\n", i + 1, sum / float64(len(val)))
}
fmt.Printf("所有班平均分:%v\n", totalAll / float64(num))
}