zoukankan      html  css  js  c++  java
  • 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 ", 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 ", 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 ", j, k)
    }
    fmt.Println(value)
    }

     

    It's a lonely road!!!
  • 相关阅读:
    VS 2010下一次性配置opencv(32位和64位相同)
    模拟鼠标事件
    Main函数参数argc,argv说明
    Visual Studio 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏解决方案
    常量指针和指针常量
    strlen函数实现的几种方法
    杀死指定的进程名
    typedef和typename关键字
    如何理解dart的mixin
    c# 通过dllimport 调用c 动态链接库
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15181779.html
Copyright © 2011-2022 走看看