二维数组使用和内存布局(二)|学习笔记

简介: 快速学习二维数组使用和内存布局

开发者学堂课程【Go语言核心编程 - 基础语法、数组、切片、Map:二维数组使用和内存布局】与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/625/detail/9653


二维数组使用和内存布局(二)

三、二维数组的使用方式2

使用方式2:直接初始化

1声明:

var 数组名[大小I大小类型= [大小I大小]类型{{初值.小{初值..}}

2、赋值

(有默认值,比如int 类型的就是0)

3、使用演示

定义数组 arr3,有两个一维数组,三个值,int 中赋值{1,2,3}, {4,5,6}

代码为:

fmt .Println()

var arr3 [2][3]int = [2][3]int{{1,2,3}, {4,5,6}}

fmt. Println("arr3=", arr3)

运行结果为:

arr3=[[1 2 3][4 5 6]]

4、说明:二维数组在声明/定义时也对应有四种写法[和维数组类似

1.var 数组名[大小][大小]类型= [大小][大小]类型{{初值…},{初值..}}

这种数组写法前面已经提过了。

2.var 数组名[大小][大小]类型= […][大小]类型{{初值…},{初值…}}

前面的[大小]可以不写用,用[…]代替,
有点像一维数组让他自己算这个二维数组中有几个元素,但是后面的
[大小]不能省略,因为前面的[...]可以根据赋初值的时候知道一共赋值几组元素进去,这样就能推导出[…]

比如在刚才代码中可以写成

var arr3 [2][3]int =[…][3]int{{1,23}, {4,5,6}}

3.var 数组名= [大小][大小]类型{{初值…},{通值..}}

这种写法就是省略前面的[大小][大小]类型,因为后面的可以直接赋值给前面的数组,而前面的数组也能直接接收了,所以可以省略前面的那部分。

像刚才的代码也能

var arr3 = [2][3]int{{1,2,3}, {4,5,6}}

甚至还可以把 var 去掉,但是去掉后必须加上“:”符号,这叫类型推导,如果保留var则可以去掉:,前面基础时讲过。

4.var 数组名= […][大小]类型{{初值…},{通值..}}

以上讲解了二维数组的两种使用方式和内存布局,后面将讲解二维数组的应用以及注意事项。

相关文章
|
存储 编译器 程序员
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
在C语言中,内存布局是程序运行时非常重要的概念。内存布局直接影响程序的性能、稳定性和安全性。理解C程序的内存布局,有助于编写更高效和可靠的代码。本文将详细介绍C程序的内存布局,包括代码段、数据段、堆、栈等部分,并提供相关的示例和应用。
441 5
【C语言】内存布局大揭秘 ! -《堆、栈和你从未听说过的内存角落》
|
机器学习/深度学习 人工智能 缓存
【AI系统】推理内存布局
本文介绍了CPU和GPU的基础内存知识,NCHWX内存排布格式,以及MNN推理引擎如何通过数据内存重新排布进行内核优化,特别是针对WinoGrad卷积计算的优化方法,通过NC4HW4数据格式重排,有效利用了SIMD指令集特性,减少了cache miss,提高了计算效率。
448 3
|
存储 Java
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
这篇文章详细地介绍了Java对象的创建过程、内存布局、对象头的MarkWord、对象的定位方式以及对象的分配策略,并深入探讨了happens-before原则以确保多线程环境下的正确同步。
225 0
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
|
存储 算法 Oracle
不好意思!耽误你的十分钟,JVM内存布局还给你
先赞后看,南哥助你Java进阶一大半在2006年加州旧金山的JavaOne大会上,一个由顶级Java开发者组成的周年性研讨会,公司突然宣布将开放Java的源代码。于是,下一年顶级项目OpenJDK诞生。Java生态发展被打开了新的大门,Java 7的G1垃圾回收器、Java 8的Lambda表达式和流API…大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
137 0
不好意思!耽误你的十分钟,JVM内存布局还给你
|
存储 Java
深入理解java对象的内存布局
这篇文章深入探讨了Java对象在HotSpot虚拟机中的内存布局,包括对象头、实例数据和对齐填充三个部分,以及对象头中包含的运行时数据和类型指针等详细信息。
145 0
深入理解java对象的内存布局
|
缓存 Java 编译器
Go 中的内存布局和分配原理
Go 中的内存布局和分配原理
|
存储 编译器 C++
Method&ConstMethod的内存布局
综上所述,常规方法和常量方法在对象的内存布局中并不直接占据空间;它们作为代码的一部分存储在程序的代码段中。对于虚方法(包括常量虚方法),它们通过VTable在对象中有表示,但即便在这种情况下,方法代码本身也不在对象的内存布局中。理解这些概念有助于深入理解面向对象编程,提高编程效率和代码的可理解性。
157 3
crash —— 获取物理内存布局信息
crash —— 获取物理内存布局信息
|
存储 NoSQL 程序员
C语言中的内存布局
C语言中的内存布局
|
存储 程序员 编译器
c++学习笔记08 内存分区、new和delete的用法
C++内存管理的学习笔记08,介绍了内存分区的概念,包括代码区、全局区、堆区和栈区,以及如何在堆区使用`new`和`delete`进行内存分配和释放。
179 0