Go语言的数组
在 Go 语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。数组存储的类型可以是内置类型,如整型或者字符串,也可以是某种结构类型。
1 数组特性
(1)内存是连续分配,CPU能把正在使用的数据缓存更久。
(2)容易计算索引,可以快速迭代数组里的所有元素。
(3)数组的每个元素类型相同,可以提供每次访问一个元素时需要在内存中移动的距离。
因此,可以以固定速度索引数组中的任意数据,速度非常快。
数组内部实现如下图:

2 数组的声明和初始化
四种方法声明和初始化数组:
方法一:var 声明
var array [5]int // 声明一个包含 5 个元素的整型数组 注意:声明变量时,总会使用对应类型的零值来对变量进行初始化。 方法二:字面量声明
array := [5]int{10, 20, 30, 40, 50} // 用具体值初始化每个元素 方法三:用...自动计算声明数组的长度
array := [...]int{10, 20, 30, 40, 50} // 容量由初始化值的数量决定 方法四:声明并指定特定元素的值
array := [5]int{1: 10, 2: 20} // 用具体值初始化索引为 1 和 2 的元素
注意: 符号“ := ” 只能在函数内部使用,代表go自动推测变量的类型。
3 数组的使用
package main
import "fmt"
func main() {
var array = [...]int{1, 2, 3, 4, 5}
// 修改元素
array[2] = 10
// 查询元素
fmt.Println("访问数组索引为2的元素", array[2]) // 访问数组索引为2的元素 10
//访问指针数组
array2 := [5]*int{0: new(int), 1: new(int)}
fmt.Println("指针数组元素2", array2[2]) // 指针数组元素2 <nil>
}
数组的使用记住以下几点:
(1)通过索引访问,修改元素。
(2)指针数组的初始化。
(3)长度和类型都相同的数组可以相互复制。(未演示)
4 多维数组
多维数组的声明和初始化和一维数组类似。
// 声明一个二维整型数组,两个维度分别存储 4 个元素和 2 个元素
var array [4][2]int // 使用数组字面量来声明并初始化一个二维整型数组
array := [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}} // 声明并初始化外层数组中索引为 1 个和 3 的元素
array := [4][2]int{1: {20, 21}, 3: {40, 41}} // 声明并初始化外层数组和内层数组的单个元素
array := [4][2]int{1: {0: 20}, 3: {1: 41}}
多维数组的使用:
// 声明一个 2×2 的二维整型数组
var array [2][2]int // 设置每个元素的整型值
array[0][0] = 10 // 将 array1 的索引为 1 的维度复制到一个同类型的新数组里
var array3 [2]int = array1[1] // 将外层数组的索引为 1、内层数组的索引为 0 的整型值复制到新的整型变量里
var value int = array1[1][0]
5 函数间传递数组
64位操作系统上,大数组用指针传递,只需要8字节的内存空间。
// 分配一个需要 8 MB 的数组
var array [1e6]int // 将数组的地址传递给函数 foo
foo(&array) // 函数 foo 接受一个指向 100 万个整型值的数组的指针
func foo(array *[1e6]int) {
// do something
}
Go语言的数组的更多相关文章
- 【算法】C语言实现数组的动态分配
C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...
- C语言一维数组、二维数组、结构体的初始化
C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...
- go语言的 数组、slice、map使用(转)
golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...
- go语言 类型:数组
在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...
- C语言基础--数组及相关
概念: 一堆相同类型的数据的有序集合 格式: 元素类型 数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...
- 学习C语言的数组
C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...
- 对于C语言中数组名是指针的理解
我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...
- c语言中数组相关问题
c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...
- 线性表之顺序存储结构(C语言动态数组实现)
线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...
- C语言入门(16)——C语言的数组
和结构体类似,数组也是一种复合数据类型,它由一系列相同类型的元素组成.C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必 ...
随机推荐
- Error Correct System CodeForces - 527B
Ford Prefect got a job as a web developer for a small company that makes towels. His current work ta ...
- Python Web-第六周-JSON and the REST Architecture(Using Python to Access Web Data)
1.JavaScript Object Notation JSON 1.JSON 官方介绍 http://www.json.org/json-zh.html 2.json1.py import jso ...
- Java中使用UDP实现简单的聊天功能
通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: import java.io.IOException; import java.net.*; im ...
- 【BZOJ2243】【SDOI2011】染色(树链剖分,线段树)
题面 我们也要换个花样,这回提供洛谷的题面 题解 线段树+树链剖分大水题 维护颜色段的方法很简单呀... 维护当前区间内的颜色段个数, 以及当前区间左端和右端的颜色, 合并的时候考虑是否要减一下就行了 ...
- mycat操作MySQL第一篇:全局表
1.安装mycat,点击bin下面startup_nowrap.bat启动 2.客户端连接mycat:server.xml里面的 <!--连接mycat用户名和密码.数据库--> < ...
- error:安装手电筒程序后在打开程序后报错:你的camera flashlight正在被其他程序占据
Q:没打开权限 A:设置里面,把这个app的camera权限打开就行了
- 内嵌tomcat启动速度慢
项目上最近要把内置的jetty换成tomcat, 来更好的支持servlet 3.0 本来以为换个容器, 几十行代码就好了. 实际上换了tomcat后, 一开始启动tomcat, 非常的慢. jett ...
- Pandas与Matplotlib基础
pandas是Python中开源的,高性能的用于数据分析的库.其中包含了很多可用的数据结构及功能,各种结构支持相互转换,并且支持读取.保存数据.结合matplotlib库,可以将数据已图表的形式可视化 ...
- SoupUI安装
(仅供学习,严禁用于商业应用) 今天开始在公司需要做websocket接口测试,以前从来没有接触过,对美好生活充满了向往啊,今天从安装开始吧! 至于什么是websocket自行百度,我也是百度出来的, ...
- python全栈开发-Day6 字符编码
python全栈开发-Day6 字符编码 一 .了解字符编码的知识储备 一 .计算机基础知识 二 .文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启 ...