阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单分析Go语言中数组的这些细节

271次阅读
没有评论

共计 2220 个字符,预计需要花费 6 分钟才能阅读完成。

导读 这篇文章主要为大家详细介绍了 Go 语言中数组一些细节的相关资料,文中的示例代码讲解详细,对我们学习 Go 语言有一定的帮助,需要的可以了解一下
Go 语言基础二
len&cap

书接上文,我们提到二维数组中的第二个维度的数组不能用 … 来表示,接下来我们要认识两个新的函数,它们分别是 len 和 cap

package main
​
func main() {a := [2]int{}
    println(len(a), cap(a)) 
}

由上方代码可知,我们在 main 函数里面定义了一个 a 数组,长度为 2,未进行初始化变量等赋值操作,所以数组元素均为 0;调用打印函数输出的是数组 a 的 length 和 cap 值,这里运行结果均为 2

二维数组的遍历

接下来我们重点讲一下二维数组的遍历,有些小伙伴可能就要问了:我没学过什么遍历循环啊,这让我怎么理解?

别急,咱们看代码主要看的是一个思路过程~

package main
import ("fmt")
func main() {var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}
    for k1, v1 := range f {
        for k2, v2 := range v1 {fmt.Printf("(%d,%d)=%d", k1, k2, v2)
        }
        fmt.Println()}
}

首先我们可以看到在 main 函数里面定义了一个 int 类型,名叫 f 的数组,它的属性为 2 行 3 列,第一行存储的是 {1,2,3},第二行存储的是 {7,8,9},我们通过 for 循环对二维数组进行一次遍历,读者暂时可以把它理解成一个循环的固定格式,后续循环会为读者一一介绍,由于本次数组是二维数组,所以我们需要调用两次 for 循环来对数组进行遍历,通过函数打印输出所需要的值

数组的拷贝与传参
package main
import "fmt"
func printArr(arr *[5]int) {arr[0] = 10
    for i, v := range arr {fmt.Println(i, v)
    }
}
func main() {var arr1 [5]int
    printArr(&arr1)
    fmt.Println(arr1)
    arr2 := [...]int{2, 4, 6, 8, 10}
    printArr(&arr2)
    fmt.Println(arr2)
}

首先我们可以看到定义了一个 printArr 方法,并在方法里面内置了一个长度为 5、int 类型的数组。紧接着我们将数组的第一个元素赋值为 10,紧接着对数组进行循环遍历,分别输出数组的索引及索引位置上的值

回到 main 方法中,我们定义了一个名叫 arr1,长度为 5,int 类型的数组,并直接打印该数组的地址值,同时调用函数打印出该数组未进行初始化时候的值,显而易见的是,由于我们在 printArr 中已经对索引位置为 1 的数组的值进行了一次修改,所以本次打印输出数组的时候,也会受到上一次数组的影响,所以本次数组打印输出的结果为 [10 0 0 0 0]。紧接着,我们定义了一个名叫 arr2,长度为任意,int 类型的数组,同时给予赋值操作,但是由于在 printArr 中索引为 1 的数组的位置的值已经发生了改变,所以本次 arr2 数组打印输出的结果为 [10 4 6 8 10]

求数组所有元素之和
package main
import (
    "fmt"
    "math/rand"
    "time"
)
func sumArr(a [10]int) int {
    var sum int = 0
    for i := 0; i 

我们首先定义了一个方法名叫 sumArr,同时往该方法里面传入一个名为 a,长度为 10,数据类型为 int 类型的数组。在本方法里面,我们定义一个变量为 sum,使用 for 循环来对数组进行遍历操作,同时使用 sum 来记录该数组各元素的和,最终返回 sum 的值

紧接着我们看到 main 方法,我们在该方法中使用 rand.seed() 函数来定义一个随机数,同时初始化一个名为 b,长度为 10,数据类型为 int 类型的数组使用 for 循环对该数组进行遍历,同时将随机数的值赋给 b 数组中元素。最终我们将数组 sumArr 中 b 的值赋给 sum,调用函数进行打印输出 sum 的值

例题:数组元素匹配问题

找出数组中和为给定值的两个元素的下标,例如数组 [1,3,5,8,7],

找出两个元素之和等于 8 的下标分别是(0,4)和(1,2)

求元素和,是给定的值

package main
import "fmt"
func myTest(a [5]int, target int) {
    // 遍历数组
    for i := 0; i 

根据题意,我们可以得知,在 myTest 方法里面我们定义了一个名为 a,长度为 5,数据类型为 int 类型的数组,同时还定义了一个目标值 target 用于检验元素和是否正确。

紧接着我们对该数组进行遍历,定义 other 变量用于表示另一个数组元素,这里进行二次遍历的原因是因为本条题目需要匹配数组中两个元素的值,因此进行二次遍历匹配数组中 i 的值,一旦与 other 匹配上,即打印输出该数组的值(两个元素)。

我们在 main 函数中对数组 b 进行变量初始化的赋值操作,以便进行方法的调用,如果在数组中能够找到 myTest()方法中的第二个,即 target 元素,就打印输出这两个元素,反之则什么都不打印

今天我们主要学习了 Go 语言在二维数组和遍历数组中的一些应用。如遍历数组的一个固定格式,亦或是数组的拷贝与传参,这些都值得读者去仔细推敲

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2220字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7799646
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...