HoRain云--Go语言数组详解:从入门到精通

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

Go 语言数组详解

1. 数组的基本概念

2. 数组的声明方式

基本声明

声明并初始化

3. 访问和修改数组元素

4. 遍历数组

使用传统 for 循环

使用 range 关键字(推荐)

5. 数组的特性

值类型特性

数组比较

6. 多维数组

声明和初始化

7. 数组与切片的区别

数组转切片

8. 实际应用示例

计算平均成绩

存储一周温度数据

9. 注意事项与最佳实践

10. 何时使用数组?


Go 语言数组详解

Go 语言中的数组是一种固定长度的、存储相同类型元素的序列数据结构。数组在内存中是连续分配的,通过索引可以高效访问和修改元素。

1. 数组的基本概念

2. 数组的声明方式

基本声明

var arr [5]int // 声明长度为5的int数组,元素初始化为0 var names [3]string // 声明长度为3的string数组,元素初始化为空字符串

声明并初始化

// 指定长度初始化 arr := [5]int{1, 2, 3, 4, 5} // 使用省略号自动推断长度 arr := [...]int{1, 2, 3, 4, 5} // 编译器自动推断长度为5 // 指定索引初始化 arr := [5]int{0: 10, 2: 30, 4: 50} // 未指定索引的元素为0 // 结果: [10 0 30 0 50]

3. 访问和修改数组元素

arr := [5]int{1, 2, 3, 4, 5} // 访问元素 fmt.Println(arr[0]) // 输出: 1 fmt.Println(arr[4]) // 输出: 5 // 修改元素 arr[2] = 100 fmt.Println(arr) // 输出: [1 2 100 4 5] // 获取数组长度 length := len(arr) // length = 5

⚠️注意:访问超出范围的索引会引发运行时 panic

4. 遍历数组

使用传统 for 循环

for i := 0; i < len(arr); i++ { fmt.Printf("索引 %d: 值 %d\n", i, arr[i]) }

使用 range 关键字(推荐)

// 同时获取索引和值 for index, value := range arr { fmt.Printf("索引 %d: 值 %d\n", index, value) } // 只获取值(忽略索引) for _, value := range arr { fmt.Println(value) } // 只获取索引(忽略值) for index := range arr { fmt.Println(index) }

5. 数组的特性

值类型特性

arr1 := [3]int{1, 2, 3} arr2 := arr1 // 复制整个数组 arr2[0] = 100 fmt.Println(arr1) // [1 2 3] - 原数组未改变 fmt.Println(arr2) // [100 2 3]

数组比较

arr1 := [3]int{1, 2, 3} arr2 := [3]int{1, 2, 3} arr3 := [4]int{1, 2, 3, 4} fmt.Println(arr1 == arr2) // true - 长度和类型相同 // fmt.Println(arr1 == arr3) // 编译错误 - 类型不同

6. 多维数组

声明和初始化

// 声明3行4列的二维数组 var matrix [3][4]int // 初始化 matrix := [3][4]int{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, } // 访问元素 fmt.Println(matrix[1][2]) // 输出: 7 // 遍历二维数组 for i := 0; i < len(matrix); i++ { for j := 0; j < len(matrix[i]); j++ { fmt.Printf("%d ", matrix[i][j]) } fmt.Println() }

7. 数组与切片的区别

特性数组切片
长度固定,定义后不可变动态,可扩容
类型值类型(复制整个数组)引用类型(底层指向数组)
内存声明时分配固定内存动态分配,可增长
灵活性
性能访问速度快(连续内存)稍慢(有额外开销)
使用场景长度固定、性能敏感大多数日常开发场景

数组转切片

arr := [5]int{1, 2, 3, 4, 5} slice := arr[:] // 创建包含arr所有元素的切片

8. 实际应用示例

计算平均成绩

package main import "fmt" func main() { scores := [5]float64{88.5, 76.0, 90.5, 69.0, 95.0} var total float64 for _, score := range scores { total += score } average := total / float64(len(scores)) fmt.Printf("平均成绩: %.2f\n", average) }

存储一周温度数据

package main import "fmt" func main() { temperatures := [7]float64{32.0, 31.5, 33.2, 34.0, 35.1, 36.5, 37.0} for i, temp := range temperatures { fmt.Printf("第 %d 天: %.1f°C\n", i+1, temp) } }

9. 注意事项与最佳实践

  1. 长度固定:数组长度是类型的一部分,不同长度的数组是不同类型
  2. 值类型陷阱:在函数中修改数组参数不会影响原数组(因为是副本)
  3. 内存效率:小数组适合值传递,大数组建议使用切片或指针
  4. 越界检查:访问越界索引会导致运行时 panic
  5. 优先使用切片:除非明确需要固定长度,否则优先使用切片
  6. 初始化默认值:未显式初始化的元素会被设置为类型的零值(int为0,string为空字符串等)

10. 何时使用数组?

适合使用数组的场景

不适合使用数组的场景


掌握 Go 语言数组的基础知识,结合切片的灵活特性,可以帮助你根据实际需求选择最合适的数据结构,编写高效、可靠的 Go 程序。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1223292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【E3S出版 | CNKI检索】第二届能源工程与污染治理国际学术会议(EEPC 2026)

第二届能源工程与污染治理国际学术会议(EEPC 2026)将于2026年3月13-15日在大连召开【汇集全球领域内的学者、研究人员、政策制定者以及业界领导者、学生优惠/团队投稿优惠、高录用、快见刊】 第二届能源工程与污染治…

2026年靠谱的安徽活动公司/安徽庆典活动公司年度推荐榜

行业背景与市场趋势近年来,随着安徽省经济的持续发展和企业品牌意识的不断提升,活动策划与庆典服务行业迎来了快速增长期。据安徽省商务厅数据显示,2025年全省活动策划市场规模已突破50亿元,年增长率保持在15%以上…

Kubernetes+Etcd----集群安装(etcd证书100年) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

人生意义 = 当下体验?

将“人生意义”与“当下体验”用等号相连&#xff0c;既是古老的东方智慧&#xff0c;也是现代心理学和神经科学关注的核心。 “当下体验”是构成人生意义最核心、最不可替代的“材料”&#xff0c;但人生意义的完整构建&#xff0c;还需要一个能将当下体验进行“编织、解读与超…

2026年比较好的无锡H5响应式网站制作/无锡网站设计权威推荐榜

行业背景与市场趋势随着移动互联网的快速发展,H5响应式网站已成为企业数字化转型的标配。2026年,无锡作为长三角地区重要的经济中心,企业对高质量网站建设的需求持续增长。数据显示,无锡地区超过78%的企业已开始采…

剑指offer-68、调整数组顺序使奇数位于偶数前⾯(⼆)

题⽬描述 输⼊⼀个⻓度为 n 整数数组,数组⾥⾯可能含有相同的元素,实现⼀个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前⾯部分,所有的偶数位于数组的后⾯部分,对奇数和奇数,偶数和偶数之间的相对位…

2026 出国英语封闭雅思零基础培训班学校口碑榜单:深度测评高性价比提分机构推荐

在全球化浪潮的推动下,留学已成为许多学子的重要人生规划,而雅思考试作为出国英语能力认证的核心考核,正成为横亘在无数零基础考生面前的一座大山。不少考生在备考过程中深陷困境:机械背记的海量词汇,在实际考试场…

2026 出国雅思学习教育机构口碑推荐排行榜:权威雅思培训辅导机构 TOP 榜单

2026 年,随着全球教育资源竞争的加剧,雅思考试已成为无数留学追梦人、职场晋升者面前的关键门槛,竞争态势愈发白热化。在这场语言能力的角逐中,考生们在雅思培训选课的道路上举步维艰。基础薄弱的考生,面对市面上…

2026年行业内知名的企业独栋买卖推荐排行,园区/企业独栋/办公场地,企业独栋买卖推荐排行

随着城市经济快速发展,企业独栋作为兼具独立性与品牌展示功能的办公载体,正成为企业总部选址的热门选择。然而,市场上企业独栋项目质量参差不齐,从地理位置、配套设施到服务体系均存在显著差异。如何在众多选项中筛…

量化交易(二)系统环境的配置

computer science 之所以赚钱,是因为它成了“模型资本的放大器”

从品牌到价格:微波反应器全面选购攻略,供应商与生产商推荐

在化学合成、材料科学、生物医药等领域,微波反应器凭借其高效加热、精准控温、显著缩短反应时间等核心优势,正从实验室的"效率神器"跃升为产业化的关键装备。面对市场上从数万元到数百万元的设备矩阵,如何…

FHQ-Treap 树 ← 洛谷P3369、AcWing253

【题目来源】https://www.luogu.com.cn/problem/P3369https://www.acwing.com/problem/content/255/【题目描述】您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入数值 x。2. 删…

2026年知名的合肥考驾照理论培训/合肥考驾照培训综合口碑榜

行业背景与市场趋势随着合肥城市化进程加快和居民生活水平提升,机动车驾驶技能已成为现代生活的必备能力之一。2026年,合肥市驾培市场规模持续扩大,学员对驾校的选择更加注重教学质量、服务体验和口碑信誉。理论培训…

2026年比较好的合肥驾校场地/合肥驾校学车服务优选榜

行业背景与市场趋势随着合肥市机动车保有量持续增长和居民生活水平提高,学习驾驶技能已成为现代生活的必备需求。2025年数据显示,合肥市每年新增驾驶员约15万人,驾培市场规模突破10亿元。在此背景下,合肥驾校行业正…

自动化测试代码覆盖率提升实战指南

一、精准评估&#xff1a;覆盖率现状诊断&#xff08;基础奠基&#xff09; 覆盖率提升始于精准诊断。当覆盖率停滞在60%-70%区间时&#xff0c;需通过工具链锁定薄弱环节&#xff1a; 工具应用&#xff1a;集成JaCoCo、Coverage.py或SonarQube生成覆盖热力图&#xff0c;识别…

构建高效测试基石:模块化测试框架设计原则与实践探析

在快速迭代的软件开发周期中&#xff0c;自动化测试已成为保障软件质量的关键环节。一个设计精良的测试框架能显著提升测试效率、降低维护成本并增强测试的可靠性。模块化设计理念作为现代软件工程的基石&#xff0c;在测试框架构建中同样发挥着核心作用。本文将系统阐述模块化…

测试数据自动生成与注入技术:赋能软件测试的高效实践

测试数据自动生成与注入技术是现代软件测试的核心环节&#xff0c;旨在通过自动化手段创建多样化数据并动态注入测试用例&#xff0c;以提升测试覆盖率、效率和可靠性。对于测试从业者&#xff0c;掌握这些技术能显著减少人工维护成本&#xff0c;加速回归测试周期&#xff0c;…

并行测试执行资源调度策略研究与应用

在软件测试领域&#xff0c;并行测试通过同时执行多个测试任务显著提升效率&#xff0c;但资源调度策略的合理性直接影响系统吞吐量和响应时间。资源调度指在多任务环境中动态分配计算资源&#xff08;如CPU、内存、带宽&#xff09;&#xff0c;以优化负载均衡和任务完成率。对…

AI元素定位技术实战:Testim与Virtuoso在测试中的应用指南

AI元素定位技术的兴起与挑战 在软件自动化测试中&#xff0c;元素定位是UI测试的核心环节&#xff0c;但传统方法如XPath或CSS选择器常因UI动态变化导致脚本失效&#xff0c;维护成本高昂。AI技术的引入&#xff0c;通过智能识别元素属性和上下文&#xff0c;显著提升了定位的…

无头浏览器资源占用优化指南

资源优化的必要性 在软件测试领域&#xff0c;无头浏览器&#xff08;如Headless Chrome、Puppeteer或Playwright&#xff09;已成为自动化测试的核心工具&#xff0c;但其资源占用问题常导致测试延迟和成本飙升。数据显示&#xff0c;未优化的无头浏览器实例可占用高达420MB内…