二维数组的使用方式
使用方式一:先声明/定义再赋值
- 1.语法:var数组名 [大小] [大小]类型
- 2.比如:var arr [2] [3]int,再赋值
package main
import (
"fmt"
)
func main() {
//定义/声明数组
var arr [4][6]int
//赋初值
arr[1][2] = 1
arr[2][1] = 2
arr[2][3] = 3
for i := 0; i < 4 ; i++{
for j := 0; j < 6; j++{
fmt.Print(arr[i][j]," ")
}
fmt.Println()
}
}
/*
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
*/
使用方式二:直接初始化
- 1.声明:var数组名[大小] [大小]类型 = [大小] [大小]类型{{初值…},{初值…}}
var arr[2][3]int = [2][3]int{{1,2,3},{4,5,6}}
fmt.Println("arr=", arr)
- 2.赋值(有默认值)
- 3.二维数组在声明/定义时也对应有四种写法[和一维数组类似]
- var数组名[大小] [大小]类型 = [大小] [大小]类型{{初值…},{初值…}}
- var数组名[大小] [大小]类型 = […] [大小]类型{{初值…},{初值…}}
- var数组名 = [大小] [大小]类型{{初值…},{初值…}}
- var数组名 = […] [大小]类型{{初值…},{初值…}}
二维数组在内存中的形式
二维数组的遍历
双层for循环完成遍历
func main() {
var arr = [2][3]int{{1,2,3},{4,5}}
for i := 0; i < len(arr) ; i++{
for j := 0; j < len(arr[i]); j++{
fmt.Printf("%v\t", arr[i][j])
}
fmt.Println()
}
}
/*
1 2 3
4 5 0
*/
for-range方式完成遍历
func main() {
var arr = [2][3]int{{1,2,3},{4,5}}
for i, v := range arr {
for j, v1 := range v{
fmt.Printf("arr[%v][%v]=%v\t",i,j,v1)
}
fmt.Println()
}
}
/*
arr[0][0]=1 arr[0][1]=2 arr[0][2]=3
arr[1][0]=4 arr[1][1]=5 arr[1][2]=0
*/
案例
定义二维数组,用于保存三个班,每个班五名同学的成绩
并求出每个班级平均分,以及所有班级平均分
package main
import (
"fmt"
)
func main() {
var scores [3][5]float64
for i := 0; i < len(scores); i++{
for j := 0; j < len(scores[i]); j++{
fmt.Printf("请输入第%d班的第%d个学生的成绩\n", i + 1, j +1)
fmt.Scanln(&scores[i][j])
}
}
totalSum := 0.0
for i := 0; i < len(scores); i++{
sum := 0.0
for j := 0; j < len(scores[i]); j++{
sum += scores[i][j]
}
totalSum += sum
fmt.Printf("第%d班的总分为%v,平均分为%v\n",i + 1,sum,sum/float64(len(scores[i])))
}
fmt.Printf("所有班的的总分为%v,平均分为%v",totalSum,totalSum/float64(len(scores)))
}
/*
第1班的总分为36,平均分为7.2
第2班的总分为282,平均分为56.4
第3班的总分为137,平均分为27.4
所有班的的总分为455,平均分为151.66666666666666
*/