二维数组
二维数组入门案例:
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