博客
关于我
Go语言学习之路-6-数组
阅读量:475 次
发布时间:2019-03-06

本文共 1267 字,大约阅读时间需要 4 分钟。

Go语言数组的基础使用指南

简单理解

数组可以看作是一系列同一类型数据的集合,每个数据项称为数组元素。数组的大小即为其包含的元素数量。

Go语言数组的特点

在Go语言中,数组的长度和类型在声明后是固定的,可以修改数组中的元素值,但无法更改数组的大小和类型。

数组的声明

数组的声明格式为:

var 数组名称 [长度] 数据类型

这条语法声明了一个数组,数组的大小和元素类型在声明时就确定下来。数组的内存会预先分配空间,并初始化存储的元素值。

先声明在赋值

可以先声明数组,再逐个赋值:

var numbers [3]intnumbers[0] = 1numbers[1] = 2numbers[2] = 3

这样做的好处是让编译器提前分配内存,避免了运行时分配带来的性能问题。

声明并赋值

可以在声明时直接赋值:

numbers := [3]int{1, 2, 3}

这种写法简洁高效,适合明确长度的数组。

指定存储位置

在赋值时可以指定元素的位置:

names := [3]string{    0: "alex",    2: "david",    1: "eson"}

数组会根据指定的位置进行赋值,剩余位置会自动初始化为零值。

不定长数组

Go语言支持动态长度的数组声明:

num := [...]int{1, 2, 3}

省略长度部分时,Go语言会自动根据数组中包含的元素数量确定数组的大小。

数组的基本操作

获取长度

可以通过len()函数获取数组的大小:

num1 := [3]int{1, 2, 3}fmt.Println(len(num1))  // 输出: 3

数组索引

数组的索引从0开始,到数组大小减1为止:

num1 := [3]int{1, 2, 3}fmt.Println(num1[0])  // 输出: 1

数组切片

通过切片操作可以获取数组的一部分数据:

num1 := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}fmt.Println(num1[3:])  // 输出: [4 5 6 7 8 9 10 11 12]fmt.Println(num1[0:2])  // 输出: [1 2]

循环操作

可以通过for循环逐个访问数组元素:

for i := 0; i < len(a); i++ {    fmt.Println(a[i])}

或者使用for range更方便地遍历数组:

for index, value := range a {    fmt.Println(index, value)}

多维数组

二维数组示例

addr := [2][3]string{    {"北京1", "北京2", "北京3"},    {"上海1"}}fmt.Println(addr)

输出结果:

[[北京1 北京2 北京3] 上海1]

注意事项

需要注意的是,多维数组中除了第一层外,其余层的长度必须在声明时明确指定,不能使用省略号...

转载地址:http://eloyz.baihongyu.com/

你可能感兴趣的文章
poj 1035
查看>>
POJ 1061 青蛙的约会 (扩展欧几里得)
查看>>
Quartz2.2.1简单使用
查看>>
POJ 1080 Human Gene Functions(DP:LCS)
查看>>
Quant 开源项目教程
查看>>
POJ 1088 滑雪
查看>>
POJ 1095 Trees Made to Order
查看>>
POJ 1113 Wall(计算几何--凸包的周长)
查看>>
poj 1125Stockbroker Grapevine(最短路)
查看>>
Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
查看>>
poj 1151 (未完成) 扫描线 线段树 离散化
查看>>
POJ 1151 / HDU 1542 Atlantis 线段树求矩形面积并
查看>>
poj 1163 数塔
查看>>
POJ 1177 Picture(线段树:扫描线求轮廓周长)
查看>>
Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)
查看>>
POJ 1182 食物链(并查集拆点)
查看>>
POJ 1185 炮兵阵地 (状态压缩DP)
查看>>
POJ 1195 Mobile phones
查看>>
POJ 1228 Grandpa's Estate (稳定凸包)
查看>>
poj 1236(强连通分量分解模板题)
查看>>