Go语言:数组

简介: Go语言数组是切片学习的基础,这篇文章详细讲解数组的概念、声明、定义及使用。

简介

数组是具有固定长度且拥有0个或者多个相同数据类型元素的集合。在Go语言中,由于数组的长度固定,所以很少直接使用数组,而是经常使用切片(slice)。

数组就是把同一类东西放到一起,然后排上序号。因为数组通常包含多个元素,所以再给数组命名时,建议使用复数形式。


声明数组

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

vararr_name [SIZE] arr_type

image.gif

这是一维数组的定义方式。

下面就声明一个数组名为array,元素个数为10,数据类型为int型的数组。

vararray [10] int

image.gif


初始化数组

🎈第一种方式:

var list = [5] int{
    1,2,3,4,5,
}

image.gif

这里需要注意的是,数组的{}不在同一行的话,记得在最后一个元素后面加上一个逗号。

🎈第二种方式:

list := [5] int{1,2,3,4,5}

image.gif

其实就是省去var,用短定义的方式来初始化。


数组的长度必须是常量,这个值在程序编译时就可以确定。

如果一个数组中的元素类型是可以比较的,那么这个数组就是可以比较的,此时可以使用“==”运算符来比较两个数组。


数组索引与访问

数组的索引和C语言一样,都是从下标为0开始,而不是从1开始。

访问数组元素也只需要将该元素的位置或索引告诉Go语言即可。访问格式就是:数组名[索引值]


遍历数组

日常工作中,经常需要遍历数组中的所有元素,对每个元素执行相同的操作。

一般我们使用for range循环处理遍历数组的问题。

👇方式

    1. 首先定义一个数组
    2. 定义一个for循环,for循环这段代码可以让Go语言从数组中取出一个下标和对应的元素,并将其存储在变量a和b中(变量可自行定义)
    3. 打印变量a和b

    a代表元素所在数组的索引值,b代表元素本身。

    packagemainimport"fmt"funcmain() {
    varlist= [5]string{
    "矿泉水", "冰红茶", "绿茶", "可乐", "芬达",
        }
    fora, b :=rangelist {
    desc :=fmt.Sprintf("%d-%s", a, b)
    fmt.Println(desc)
        }
    }

    image.gif

    打印结果如下:

    0-矿泉水

    1-冰红茶

    2-绿茶

    3-可乐

    4-芬达

    目录
    相关文章
    |
    2月前
    |
    存储 安全 Java
    【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
    结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
    206 1
    |
    10月前
    |
    编译器 Go
    揭秘 Go 语言中空结构体的强大用法
    Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
    |
    10月前
    |
    运维 监控 算法
    监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
    在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
    |
    4月前
    |
    Cloud Native 安全 Java
    Go:为云原生而生的高效语言
    Go:为云原生而生的高效语言
    299 1
    |
    4月前
    |
    Cloud Native Go API
    Go:为云原生而生的高效语言
    Go:为云原生而生的高效语言
    401 0
    |
    4月前
    |
    Cloud Native Java Go
    Go:为云原生而生的高效语言
    Go:为云原生而生的高效语言
    261 0
    |
    4月前
    |
    Cloud Native Java 中间件
    Go:为云原生而生的高效语言
    Go:为云原生而生的高效语言
    230 0
    |
    4月前
    |
    Cloud Native Java Go
    Go:为云原生而生的高效语言
    Go:为云原生而生的高效语言
    334 0
    |
    4月前
    |
    数据采集 Go API
    Go语言实战案例:多协程并发下载网页内容
    本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。
    |
    4月前
    |
    数据采集 JSON Go
    Go语言实战案例:实现HTTP客户端请求并解析响应
    本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。