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!!!
  • 相关阅读:
    标准差和方差
    Prism+WPF使用DependencyInjection实现AutoMapper的依赖注入功能
    集合框架3-Arrays 类
    集合框架2- ArrayList
    Windows 下安装 SSH 服务(Openssh)
    利用 Spring Boot 中的 @ConfigurationProperties,优雅绑定配置参数
    Spring系列.Environment接口
    (4)ElasticSearch在linux环境中搭建集群
    (1)RabbitMQ在Docker上安装
    说一说Web端侧AI
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15181779.html
Copyright © 2011-2022 走看看