5 Go的数组

概述

在上一节的内容中,我们介绍了Go的基本数据类型,包括:布尔类型、整数类型、浮点数类型、复数类型、字符串类型等。在本节中,我们将介绍Go的数组。Go语言中的数组是一种固定长度的数据结构,它包含一组按顺序排列的元素,每个元素都具有相同的类型。数组的元素可以是任何类型,包括基本类型和复合类型。

声明数组

声明数组可以使用var关键字,并同时指定数组的长度和元素类型。其语法格式如下:

var arrayName [size]dataType

其中,arrayName是数组的名称,size是数组的大小,dataType是数组中元素的数据类型。

在下面的示例代码中,我们声明了一个包含3个字符串元素的数组和一个包含6个整型元素的数组。

Go 复制代码
var arrText [3]string
var arrNum [6]int

注意:声明数组时,数组中的每个元素都会根据其数据类型进行默认初始化。对于整数类型,初始值为0;对于字符串类型,初始值为空字符串。

初始化数组

初始化数组可通过初始化列表来指定数组元素的值,初始化列表使用大括号{}来包含数组元素。可参考下面的示例代码。

Go 复制代码
package main

import "fmt"

func main() {
    var arrNum [5]int = [5]int{1, 2, 3, 4, 5}
    // 输出:[1 2 3 4 5]
    fmt.Println(arrNum)
}

给初始化列表赋值时,可以仅指定部分元素的值,其余元素则默认初始化为0或空字符串等。在下面的示例代码中,我们声明了含有5个元素的整型数组,但仅仅给出了前三个元素的值。此时,最后两个元素的值为0。

Go 复制代码
package main

import "fmt"

func main() {
    var arrNum [5]int = [5]int{1, 2, 3}
    // 输出:[1 2 3 0 0]
    fmt.Println(arrNum)
}

也可以不指定数组的大小,而让编译器根据初始化列表自动进行推断。此时,[]中可以不指定数字,或者使用符号...代替数字。

Go 复制代码
package main

import "fmt"

func main() {
    arrNum := []int{1, 2, 3}
    // 输出:[1 2 3]
    fmt.Println(arrNum)

    arrNum2 := [...]int{1, 2, 3, 4, 5}
    // 输出:[1 2 3 4 5]
    fmt.Println(arrNum2)
}

访问数组元素

可以使用索引配合中括号[]来访问数组中的元素,索引从0开始,依次递增。比如:要访问数组arr的第一个元素,可以使用arr[0]。

Go 复制代码
package main

import "fmt"

func main() {
    arrNum := []int{1, 2, 3, 4, 5}
    for i := 0; i < len(arrNum); i++ {
        fmt.Println(arrNum[i])
    }
}

当然,也可以修改数组中的元素,可参考下面的示例代码。

Go 复制代码
package main

import "fmt"

func main() {
    arrNum := []int{1, 2, 3, 4, 5}
    // 修改数组元素,输出:101 102 103 104 105
    for i := 0; i < len(arrNum); i++ {
        arrNum[i] += 100
        fmt.Printf("%d ", arrNum[i])
    }
}
相关推荐
liulilittle8 分钟前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信
88号技师14 分钟前
2025年6月一区-田忌赛马优化算法Tianji’s horse racing optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
勤奋的知更鸟20 分钟前
Java 编程之模板方法模式
java·开发语言·模板方法模式
上单带刀不带妹1 小时前
手写 Vue 中虚拟 DOM 到真实 DOM 的完整过程
开发语言·前端·javascript·vue.js·前端框架
-凌凌漆-2 小时前
【Qt】QStringLiteral 介绍
开发语言·qt
程序员爱钓鱼2 小时前
Go语言项目工程化 — 常见开发工具与 CI/CD 支持
开发语言·后端·golang·gin
军训猫猫头2 小时前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
真的想上岸啊3 小时前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
明天好,会的3 小时前
跨平台ZeroMQ:在Rust中使用zmq库的完整指南
开发语言·后端·rust
丁劲犇4 小时前
用 Turbo Vision 2 为 Qt 6 控制台应用创建 TUI 字符 MainFrame
开发语言·c++·qt·tui·字符界面·curse