2026/2/10 18:17:03
网站建设
项目流程
合肥市城乡和建设网站,童美童程儿童编程价格,廊坊手机网站,家政服务公司网站源码#x1f3ac; HoRain云小助手#xff1a;个人主页 #x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站#xff0c;性价比超高#xff0c;大内存超划算#xff01;… 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. 数组的基本概念固定长度数组长度在定义时确定之后不可改变同类型元素数组中所有元素必须是相同类型值类型数组是值类型赋值或传递时会生成完整副本索引从0开始第一个元素索引为0最后一个为len(arr)-1类型包含长度[5]int和[10]int是不同的类型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⚠️注意访问超出范围的索引会引发运行时 panic4. 遍历数组使用传统 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, i1, temp) } }9. 注意事项与最佳实践长度固定数组长度是类型的一部分不同长度的数组是不同类型值类型陷阱在函数中修改数组参数不会影响原数组因为是副本内存效率小数组适合值传递大数组建议使用切片或指针越界检查访问越界索引会导致运行时 panic优先使用切片除非明确需要固定长度否则优先使用切片初始化默认值未显式初始化的元素会被设置为类型的零值int为0string为空字符串等10. 何时使用数组✅适合使用数组的场景数据量固定且已知如一周7天、一年12个月对性能要求极高避免切片的额外开销需要值语义避免意外修改❌不适合使用数组的场景数据量不确定或需要动态增长需要频繁添加/删除元素数组较大且需要在函数间传递考虑使用切片或指针掌握 Go 语言数组的基础知识结合切片的灵活特性可以帮助你根据实际需求选择最合适的数据结构编写高效、可靠的 Go 程序。❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧