1. 二维数组的快速入门

快速入门案例:

    请用二维数组输出如下图形:

    000000

    001000

    020300

    000000

package main
import (
	"fmt"
)
func main() {
	// 快速入门案例:
	// 请用二维数组输出如下图形:
	// 000000
	// 001000
	// 020300
	// 000000

	// 定义/声明二维数组
	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.Printf("%v ",arr[i][j])
		}
		fmt.Println()
	}
}

2. 二维数组的使用方式

1)二维数组的使用方式1

package main
import (
	"fmt"
)

func main() {
	// 1. 先声明/定义,再赋值
	var arr [2][3]int
	arr[1][1] = 10
	fmt.Println(arr)
	fmt.Printf("arr[0]的地址是:%p \n",&arr[0])
	fmt.Printf("arr[1]的地址是:%p \n",&arr[1])
	fmt.Printf("arr[0][0]的地址是:%p \n",&arr[0][0])
	fmt.Printf("arr[0][0]的地址是:%p \n",&arr[0][1])
	fmt.Printf("arr[1][0]的地址是:%p \n",&arr[1][0])
	fmt.Printf("arr[1][0]的地址是:%p \n",&arr[1][1])
}

2) 二维数组的使用方式2

package main
import (
	"fmt"
)

func main() {
	// 2. 直接初始化
	var arr [2][3]int = [2][3]int{{1,2,3},{4,5,6}}
	fmt.Println("arr:",arr)
}

3) 二维数组声明的四种方法

package main
import (
	"fmt"
)

func main() {
	var arr1 [2][3]int = [2][3]int{{1,2,3,}, {4,5,6}}
	var arr2 [2][3]int = [...][3]int{{1,2,3}, {4,5,6}}
	var arr3 = [2][3]int{{1,2,3}, {4,5,6}}
	var arr4 = [...][3]int{{1,2,3}, {4,5,6}}
	fmt.Println("arr1:",arr1)
	fmt.Println("arr2:",arr2)
	fmt.Println("arr3:",arr3)
	fmt.Println("arr4:",arr4)
}

3. 二维数组的遍历

1)二维数组的遍历1

package main
import (
	"fmt"
)

func main() {
	// 演示二维数组的遍历方式1
	var arr = [2][3]int{{1,2,3}, {4,5,6}}

	for i := 0; i < len(arr); i++ {
		for j := 0; j < len(arr[i]); j++ {
			fmt.Printf("arr[%v][%v]=%v\t",i,j,arr[i][j])
		}
		fmt.Println()
	}
}

2)二维数组的遍历2

package main
import (
	"fmt"
)

func main() {
	// 演示遍历二维数组的方式2
	var arr = [...][3]int{{1,2,3}, {4,5,6}}
	// for-range来遍历二维数组
	for index1,value1 := range arr {
		for index2,value2 := range value1 {
			fmt.Printf("arr[%v][%v]=%v\t",index1,index2,value2)
		}
		fmt.Println()
	}
}

4. 二维数组的应用案例

要求如下:
    定义二维数组,用于保存三个班,每个班五名同学成绩,
    并求出每个班级的平均分,以及所有班级的平均分

package main
import (
	"fmt"
)

func main() {
	// 要求如下:
	// 定义二维数组,用于保存三个班,每个班五名同学成绩,
	// 并求出每个班级的平均分,以及所有班级的平均分
	
	// 1. 声明/定义二维数组
	var arr [3][5]float64

	// 2. 循环输入成绩
	for i := 0; i < len(arr); i++ {
		for j := 0; j < len(arr[i]); j++ {
			fmt.Printf("请输入:%v班的第%v名同学的成绩:\n",i+1,j+1)
			fmt.Scanln(&arr[i][j])
		}
	}
	fmt.Println("arr",arr)
	totalScore := 0.0
	for index1,value1 := range arr {
		sum := 0.0
		for _,value2 := range value1 {
			sum += value2
		}
		fmt.Printf("%v班的平均分为:%v \n", index1 + 1, sum / float64(len(value1)))
		totalScore += sum
	}
	fmt.Println("所有班级的平均分是:",totalScore / float64(len(arr) * len(arr[0])))
}