二维数组

二维数组入门案例:

func main() {
	//转置
	var a1 = [3][4]int{
		{1, 2, 3, 6},
		{4, 5, 6, 15},
		{7, 8, 9, 24}}

	b1 := [4][3]int{}
	for i := 0; i < 3; i++ {
		for j := 0; j < 4; j++ {
			if i != j {
				b1[j][i] = a1[i][j]

			} else {
				b1[j][i] = a1[i][j]
			}
		}
	}
	fmt.Println(b1)

	b2 := b1
	//二维数组遍历方式
	for i := 0; i < 4; i++ {
		for j := 0; j < 3; j++ {
			fmt.Printf("%v ", b2[i][j])
		}
		fmt.Println()
	}
}
var 数组名 [大小][大小]类型var a1 [2][2]intvar a1 [...][3]int[...]b1=[3][4]int
arr := [2][3]int{{1, 2, 3}, {4, 5, 6}}

	fmt.Printf("arr的地址为%p\n", &arr)             //arr的地址为0xc0000c0060
	fmt.Printf("arr[0]的地址为%p\n", &arr[0])       //arr[0]的地址为0xc0000c0060
	fmt.Printf("arr[0][0]的地址为%p\n", &arr[0][0]) //arr[0][0]的地址为0xc0000c0060
	fmt.Printf("arr[1]的地址为%p\n", &arr[1])       //arr[1]的地址为0xc0000c0078
	fmt.Printf("arr[1][0]的地址为%p\n", &arr[1][0]) //arr[1][0]的地址为0xc0000c0078

}

在这里插入图片描述

forfor-range
func main() {
	//演示二维数组的遍历
	var arr = [2][3]int{{1, 2, 3}, {4, 5}} //arr[1][2]默认为0

	//for循环遍历
	for i := 0; i < len(arr); i++ {//第一维长度
		for j := 0; j < len(arr[i]); j++ {
			fmt.Printf("%v ", arr[i][j])
		}
		fmt.Println()
	}
	//for range 循环遍历
	for i, v := range arr {
		for j, v1 := range v {
			fmt.Printf("arr[%v][%v]=%v ", i, j, v1)
		}
		fmt.Println()
	}
}

Output
1 2 3
4 5 0
arr[0][0]=1 arr[0][1]=2 arr[0][2]=3
arr[1][0]=4 arr[1][1]=5 arr[1][2]=0