03-数组(array)

@

1. 声明数组

- 语法

  • 语法
var arrayName [N]type
  • 语法示例
var names [3]string

- 完整示例

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

- 未赋值的元素仍为默认值

如下,我们赋值时给长度为3的数组传入两个元素,则第三个元素仍为默认值(int 默认值为0)

  • 代码
package main
import "fmt"
func main() {
arrayInt := [3]int{66,166}
fmt.Printf("数组为:%+v\n长度为:%d\n",arrayInt,len(arrayInt))
}
  • 结果
数组为:[66 166 0]
长度为:3

3. 数组元素赋值

- 语法

arrayName[N] = valueN
  • 语法示例
names[0] = "刘备"

- 示例

  • 代码
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 数组长度不可以更改

没有示例,怎么改都会报错


posted on   运维开发玄德公  阅读(59)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· 阿里最新开源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时间/时间戳的获取/转换/计算
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示