当前位置: 首页 > news >正文

go语言学习 第7章:数组

第7章:数组

数组是一种基本的数据结构,用于存储相同类型的元素集合。在Go语言中,数组的大小是固定的,一旦定义,其长度不可改变。本章将详细介绍Go语言中数组的定义、初始化、访问、遍历以及一些常见的操作。

一、数组的定义与初始化

(一)定义数组

在Go语言中,数组的定义格式如下:

var 数组名 [数组大小]数据类型
  • 数组大小:数组中元素的数量,必须是一个常量。
  • 数据类型:数组中所有元素的数据类型。

例如,定义一个包含5个整数的数组:

var scores [5]int

(二)初始化数组

数组可以在定义时进行初始化,也可以在定义后单独赋值。

1. 定义时初始化
var scores [5]int = [5]int{95, 91, 39, 60, 21}

或者更简洁地:

var scores = [5]int{95, 91, 39, 60, 21}
2. 定义后初始化
var scores [5]int
scores[0] = 95
scores[1] = 91
scores[2] = 39
scores[3] = 60
scores[4] = 21

(三)省略数组大小

如果在定义数组时已经提供了初始值,可以省略数组的大小,让编译器自动推断:

var scores = [...]int{95, 91, 39, 60, 21}

二、数组的访问与修改

(一)访问数组元素

通过索引来访问数组中的元素,索引从0开始。例如:

package mainimport "fmt"func main() {var scores = [5]int{95, 91, 39, 60, 21}fmt.Println("第一个元素:", scores[0])fmt.Println("第二个元素:", scores[1])
}

(二)修改数组元素

同样通过索引来修改数组中的元素。例如:

package mainimport "fmt"func main() {var scores = [5]int{95, 91, 39, 60, 21}scores[2] = 88 // 修改第三个元素fmt.Println("修改后的数组:", scores)
}

三、数组的遍历

(一)使用for循环遍历

可以使用普通的for循环来遍历数组。例如:

package mainimport "fmt"func main() {var scores = [5]int{95, 91, 39, 60, 21}for i := 0; i < len(scores); i++ {fmt.Println("索引", i, "的值为:", scores[i])}
}

(二)使用for-range循环遍历

for-range循环是Go语言中特有的一种迭代结构,可以更简洁地遍历数组。例如:

package mainimport "fmt"func main() {var scores = [5]int{95, 91, 39, 60, 21}for index, value := range scores {fmt.Println("索引", index, "的值为:", value)}
}

四、数组的长度

可以使用内置函数len来获取数组的长度。例如:

package mainimport "fmt"func main() {var scores = [5]int{95, 91, 39, 60, 21}fmt.Println("数组的长度为:", len(scores))
}

五、多维数组

(一)定义多维数组

多维数组是数组的数组。例如,定义一个2维数组:

var matrix [3][3]int

(二)初始化多维数组

var matrix = [3][3]int{{1, 2, 3},{4, 5, 6},{7, 8, 9},
}

(三)访问与修改多维数组

package mainimport "fmt"func main() {var matrix = [3][3]int{{1, 2, 3},{4, 5, 6},{7, 8, 9},}fmt.Println("第一个元素:", matrix[0][0])matrix[1][1] = 100 // 修改第二行第二列的值fmt.Println("修改后的数组:", matrix)
}

(四)遍历多维数组

package mainimport "fmt"func main() {var matrix = [3][3]int{{1, 2, 3},{4, 5, 6},{7, 8, 9},}for i := 0; i < len(matrix); i++ {for j := 0; j < len(matrix[i]); j++ {fmt.Println("matrix[", i, "][", j, "] = ", matrix[i][j])}}
}

六、数组的内存分析

数组是值类型,存储在栈上。数组的每个元素占用的字节数取决于其数据类型。例如,int类型在64位系统上通常占用8字节,因此一个[5]int数组占用40字节。

七、数组的优缺点

(一)优点

  • 访问速度快:数组的索引访问非常快,时间复杂度为O(1)。
  • 内存连续:数组的元素在内存中是连续存储的,这有助于提高缓存命中率。

(二)缺点

  • 大小固定:数组的大小在定义后不能改变。
  • 灵活性差:数组的大小必须在编译时确定,不能动态调整。

八、总结

本章详细介绍了Go语言中数组的定义、初始化、访问、遍历以及一些常见的操作。数组是一种基本的数据结构,适用于存储固定大小的相同类型元素集合。通过合理使用数组,可以实现高效的元素访问和操作。

在实际开发中,数组的固定大小可能会限制其使用场景。在需要动态调整大小的情况下,可以使用切片(将在第8章详细介绍)。数组和切片在Go语言中都是非常重要的数据结构,掌握它们的使用方法对于编写高效、可读性强的代码至关重要。

在接下来的章节中,我们将继续深入学习Go语言的其他特性,如切片、映射等。希望读者能够通过这些内容更好地掌握Go语言,提升编程技能。

相关文章:

  • 【Bluedroid】蓝牙启动之 SMP_Init 源码解析
  • FPGA没有使用的IO悬空对漏电流有没有影响
  • art-pi2 上手记录(二)
  • 第五讲——一元函数微分学的几何应用
  • 端游如何反调试
  • Curtain MonGuard:智能水印颜色适配,提升屏幕信息安全
  • n皇后问题的 C++ 回溯算法教学攻略
  • C++算法动态规划3
  • 初识结构体,整型提升及操作符的属性
  • 仿射变换、根据特征点进行仿射变换
  • MultipartFile
  • 【Linux】ls 命令详解及使用示例:列出目录中的内容
  • 向量压缩方法全解析:从线性插值到小波压缩
  • spring重试机制
  • [IMX][UBoot] 01.UBoot 常用命令
  • MPO接口型光模块的失效检测
  • 进一步探究synchronized
  • 智能生成完整 Java 后端架构,告别手动编写 ControllerServiceDao
  • Langgraph实战--在Agent中加入人工反馈
  • 区分viewmodel和model职责的方法
  • 外贸网站导航栏建设技巧/吸引客流的25个技巧
  • 合肥专业做公司网站/做一个企业网站大概需要多少钱
  • win2012 wordpress/网站搜索引擎优化
  • 宝安led行业网站建设/如何给网站做推广
  • 网站建设 cms 下载/百度竞价推广专员
  • 网站开发合同 中英文/活动推广宣传方案