8.24Go之容器之多维数组

时间:2021-08-24
本文章向大家介绍8.24Go之容器之多维数组,主要包括8.24Go之容器之多维数组使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

8.24Go之容器之多维数组

多维数组的一些特点

  • 数组属于值类型,多维数组的所有维度都会在创建时自动初始化零值

  • 多维数组尤其适合管理具有父子关系或者与坐标系相关联的数据。

多维数组的声明语法:

var 数组变量名 [元素数量][元素数量][元素数量]...[元素数量]Type

声明二维数组

直接声明二维整型数组:

var arry [4][2]int

使用数组字面量来声明并初始化一个二维整型数组:

array = [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}

声明并初始化指定的索引:

array = [4][2]int{1: {20, 21}, 3: {40, 41}}

声明并初始化指定元素:

array = [4][2]int{1: {0: 20}, 3: {1: 41}}
多维数组的内存模型

代码示例:

package main

import "fmt"

var array [4][3]int
func main() {
array = [4][3]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}
fmt.Println(array)
array = [4][3]int{1:{0, 21}, 3:{1:41}}
fmt.Println(array)
}

访问多维数组的元素

根据对应的索引一层一层的去访问:

var arrays [2][2]int
func main(){
arrays[0][0] = 10
arrays[0][1] = 20
arrays[1][0] = 30
arrays[1][1] = 40
for i, j := range arrays {
fmt.Printf("第%d位的值是%d\n", i, j)
}
}

数组之间的赋值需要类型一致--->数组长度、元素中数据的类型:

package main

import "fmt"

func main() {
var array [2][2]int
var arrays [2][2]int
arrays[0][0] = 10
arrays[0][1] = 20
arrays[1][0] = 30
arrays[1][1] = 40
array = arrays
for i, j := range array {
fmt.Printf("第%d位的值是%d\n", i, j)
}
}

因为数组是值类型,所以可以独立的复制某个维度:

package main

import "fmt"

func main(){
   var array2 [2]int = arrays[0]
var value int = arrays[0][1]
for j, k := range array2 {
fmt.Printf("第%d位的值是%d\n", j, k)
}
fmt.Println(value)
}

 

It's a lonely road!!!

原文地址:https://www.cnblogs.com/JunkingBoy/p/15181779.html