@
1. 声明数组
- 语法
- 完整示例
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| ) |
| |
| func main() { |
| var names [3]string |
| fmt.Printf("变量 names 类型为:%q\n打印结果:%+v\n长度为:%d",reflect.TypeOf(names),names,len(names)) |
| } |
结果
| 变量 names 类型为:"[3]string" |
| 打印结果:[ ] |
| 长度为:3 |
2. 数组赋值
- 语法
| var arrayName = [N]type{valu1,valu2,valu3……} |
在函数中可以写做
| arrayName := [N]type{valu1,valu2,valu3……} |
| names := [3]string{"刘备","关羽","张飞"} |
可以写做
| var names [3]string |
| names = [3]string{"刘备","关羽","张飞"} |
也可以写做:
| var names [3]string |
| names = [...]string{"刘备","关羽","张飞"} |
但是成员数和定义的长度一定要一致,否则报错。
- 完整示例
| package main |
| import "fmt" |
| |
| func main() { |
| names := [3]string{"刘备","关羽","张飞"} |
| fmt.Printf("数组为:%+v\n长度为:%d\n",names,len(names)) |
| } |
- 未赋值的元素仍为默认值
如下,我们赋值时给长度为3的数组传入两个元素,则第三个元素仍为默认值(int 默认值为0)
| package main |
| import "fmt" |
| |
| func main() { |
| arrayInt := [3]int{66,166} |
| fmt.Printf("数组为:%+v\n长度为:%d\n",arrayInt,len(arrayInt)) |
| } |
3. 数组元素赋值
- 语法
- 示例
| package main |
| |
| import "fmt" |
| |
| func main() { |
| var names [3]string |
| fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names)) |
| names[0] = "刘备" |
| fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names)) |
| names[2] = "张飞" |
| fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names)) |
| } |
| ================= |
| 数组为:[ ] |
| 长度为:3 |
| ================= |
| 数组为:[刘备 ] |
| 长度为:3 |
| ================= |
| 数组为:[刘备 张飞] |
| 长度为:3 |
4. 数组访问
4.1 访问数组中元素
| package main |
| |
| import "fmt" |
| |
| func main() { |
| names := [3]string{"刘备","关羽","张飞"} |
| fmt.Println(names[0]) |
| } |
4.2 遍历数组
| package main |
| |
| import "fmt" |
| |
| func main() { |
| names := [3]string{"刘备","关羽","张飞"} |
| for num,name := range names{ |
| fmt.Printf("第%d个元素是: %q\n",num,name) |
| } |
| } |
| 第0个元素是: "刘备" |
| 第1个元素是: "关羽" |
| 第2个元素是: "张飞" |
5. 数组的修改
5.1 修改全部数组元素值
数组直接等于一个长度相等的数组,则全部值都改变。(长度不相等的数组会报错)
| package main |
| import "fmt" |
| |
| func main() { |
| names := [3]string{"刘备","关羽","张飞"} |
| fmt.Printf("原数组为:%+v\n",names) |
| names = [3]string{"孙权","周瑜","黄盖"} |
| fmt.Printf("修改后数组为:%+v\n",names) |
| } |
| 原数组为:[刘备 关羽 张飞] |
| 修改后数组为:[孙权 周瑜 黄盖] |
- 修改时,若长度为3的数组只传入2个元素,未传入值的元素将修改为默认值
5.2 修改单个元素值
| package main |
| import "fmt" |
| |
| func main() { |
| names := [3]string{"刘备","关羽","张飞"} |
| fmt.Printf("原数组:%+v\n",names) |
| names[0]="刘玄德" |
| fmt.Printf("修改后:%+v\n",names) |
| |
| } |
| 原数组:[刘备 关羽 张飞] |
| 修改后:[刘玄德 关羽 张飞] |
5.3 数组长度不可以更改
没有示例,怎么改都会报错

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-12-05 【夜莺监控方案】06-监控redis集群(prometheuse+n9e+redis_exporter)
2021-12-05 【夜莺监控方案】04-k8s集群监控(下)(kube-state-metrics+cadvisor+prometheus+n9e及FAQ)
2021-12-05 【夜莺监控方案】04-k8s集群监控(上)(kube-state-metrics+cadvisor+prometheus+n9e)
2021-12-05 【夜莺监控方案】03-容器监控(cadvisor+n9e)
2021-12-05 【夜莺监控方案】02-n9e-v5-agent部署
2021-12-05 【夜莺监控方案】01-n9e-v5-server部署
2021-12-05 go时间/时间戳的获取/转换/计算