31-Golang中的二维数组
二维数组的使用方式
使用方式一:先声明/定义再赋值
- 1.语法:var数组名 [大小] [大小]类型
- 2.比如:var arr [2] [3]int,再赋值
package main
import ("fmt"
)func main() {//定义/声明数组var arr [4][6]int//赋初值arr[1][2] = 1arr[2][1] = 2arr[2][3] = 3for 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]float64for 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.0for i := 0; i < len(scores); i++{sum := 0.0for j := 0; j < len(scores[i]); j++{sum += scores[i][j]}totalSum += sumfmt.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
*/