01-go基础-05-数组(声明数组、数组赋值、遍历数组、数组值修改)
创始人
2024-03-21 01:47:49
0

文章目录

  • 1. 声明数组
    • - 语法
    • - 完整示例
  • 2. 数组赋值
    • - 语法
    • - 完整示例
    • - 未赋值的元素仍为默认值
  • 3. 数组元素赋值
    • - 语法
    • - 示例
  • 4. 数组访问
    • 4.1 访问数组中元素
    • 4.2 遍历数组
  • 5. 数组的修改
    • 5.1 修改全部数组元素值
    • 5.2 修改单个元素值
    • 5.3 数组长度不可以更改

1. 声明数组

- 语法

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

- 完整示例

package mainimport ("fmt""reflect"
)func main() {var names [3]stringfmt.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 mainimport "fmt"func main() {var names [3]stringfmt.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 mainimport "fmt"func main() {names := [3]string{"刘备","关羽","张飞"}fmt.Println(names[0])
}
  • 结果
刘备

4.2 遍历数组

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

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


相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...