【Go】Go 语言教程--GO语言数组(十一)

女爷i 2023-10-13 15:07 164阅读 0赞

往期回顾:

  • Go 语言教程–介绍(一)
  • Go 语言教程–语言结构(二)
  • Go 语言教程–语言结构(三)
  • Go 语言教程–数据类型(四)
  • Go 语言教程–语言变量(五)
  • Go 语言教程–GO语言常量(六)
  • Go 语言教程–GO语言运算符(七)
  • Go 语言教程–GO条件和循环语句(八)
  • Go 语言教程–GO语言函数(九)
  • Go 语言教程–GO语言变量作用域(十)

文章目录

  • 声明数组
  • 初始化数组
  • 访问数组元素

Go 语言提供了数组类型的数据结构。

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。

相对于去声明 number0, number1, …, number99 的变量,使用数组形式 numbers[0], numbers[1] …, numbers[99] 更加方便且易于扩展。

数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。

在这里插入图片描述

声明数组

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:

var variable_name [SIZE] variable_type
以上为一维数组的定义方式。例如以下定义了数组 balance 长度为 10 类型为 float32:

  1. var balance [10] float32

初始化数组

以下演示了数组初始化:

  1. var balance = [5]float32{
  2. 1000.0, 2.0, 3.4, 7.0, 50.0}

我们也可以通过字面量在声明数组的同时快速初始化数组:

  1. balance := [5]float32{
  2. 1000.0, 2.0, 3.4, 7.0, 50.0}

如果数组长度不确定,可以使用 … 代替数组的长度,编译器会根据元素个数自行推断数组的长度:

  1. var balance = [...]float32{
  2. 1000.0, 2.0, 3.4, 7.0, 50.0}

  1. balance := [...]float32{
  2. 1000.0, 2.0, 3.4, 7.0, 50.0}

如果设置了数组的长度,我们还可以通过指定下标来初始化元素:

  1. // 将索引为 1 和 3 的元素初始化
  2. balance := [5]float32{
  3. 1:2.0,3:7.0}

初始化数组中 {} 中的元素个数不能大于 [] 中的数字。

如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:

  1. balance[4] = 50.0

以上实例读取了第五个元素。数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。

在这里插入图片描述

访问数组元素

数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。例如:

  1. var salary float32 = balance[9]

以上实例读取了数组 balance 第 10 个元素的值。

以下演示了数组完整操作(声明、赋值、访问)的实例:

实例 1
package main

  1. import "fmt"
  2. func main() {
  3. var n [10]int /* n 是一个长度为 10 的数组 */
  4. var i,j int
  5. /* 为数组 n 初始化元素 */
  6. for i = 0; i < 10; i++ {
  7. n[i] = i + 100 /* 设置元素为 i + 100 */
  8. }
  9. /* 输出每个数组元素的值 */
  10. for j = 0; j < 10; j++ {
  11. fmt.Printf("Element[%d] = %d\n", j, n[j] )
  12. }
  13. }

以上实例执行结果如下:

  1. Element[0] = 100
  2. Element[1] = 101
  3. Element[2] = 102
  4. Element[3] = 103
  5. Element[4] = 104
  6. Element[5] = 105
  7. Element[6] = 106
  8. Element[7] = 107
  9. Element[8] = 108
  10. Element[9] = 109

实例 2
package main

  1. import "fmt"
  2. func main() {
  3. var i,j,k int
  4. // 声明数组的同时快速初始化数组
  5. balance := [5]float32{
  6. 1000.0, 2.0, 3.4, 7.0, 50.0}
  7. /* 输出数组元素 */ ...
  8. for i = 0; i < 5; i++ {
  9. fmt.Printf("balance[%d] = %f\n", i, balance[i] )
  10. }
  11. balance2 := [...]float32{
  12. 1000.0, 2.0, 3.4, 7.0, 50.0}
  13. /* 输出每个数组元素的值 */
  14. for j = 0; j < 5; j++ {
  15. fmt.Printf("balance2[%d] = %f\n", j, balance2[j] )
  16. }
  17. // 将索引为 1 和 3 的元素初始化
  18. balance3 := [5]float32{
  19. 1:2.0,3:7.0}
  20. for k = 0; k < 5; k++ {
  21. fmt.Printf("balance3[%d] = %f\n", k, balance3[k] )
  22. }
  23. }

以上实例执行结果如下:

  1. balance[0] = 1000.000000
  2. balance[1] = 2.000000
  3. balance[2] = 3.400000
  4. balance[3] = 7.000000
  5. balance[4] = 50.000000
  6. balance2[0] = 1000.000000
  7. balance2[1] = 2.000000
  8. balance2[2] = 3.400000
  9. balance2[3] = 7.000000
  10. balance2[4] = 50.000000
  11. balance3[0] = 0.000000
  12. balance3[1] = 2.000000
  13. balance3[2] = 0.000000
  14. balance3[3] = 7.000000
  15. balance3[4] = 0.000000

发表评论

表情:
评论列表 (有 0 条评论,164人围观)

还没有评论,来说两句吧...

相关阅读