• 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!!!
  • 相关阅读:
    ecstore前台模板变量处理
    MySQL慢查询日志总结
    Linux 操作MySQL常用命令行
    CGI、FastCGI和php-fpm的概念和区别
    sync实现windows与nginx主机端文件同步(参考文档)
    PHP实现四种基本排序算法
    http和https协议
    linux的计划任务
    php封装一个接口类
    mysql的常见面试问题
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15181779.html
Copyright © 2020-2023  润新知