Go 语言中的数组:声明、初始化与应用

Go 语言的数据结构中,数组是一个基本的构成元素,它能存储一系列固定长度的项,这些项具有相同的类型。尽管在 Go 中切片的使用更为普遍,数组仍然是理解更高级数据结构如切片和map的基础。本文将详细探讨 Go 语言中数组的声明、初始化和相关操作,以及它们在内存中的表现。


文章目录

      • 1、数组基础
        • 1.1、数组简介
        • 1.2、声明数组
        • 1.3、数组在内存中的结构
      • 2、数组操作
        • 2.1、遍历数组
        • 2.2、初始化数组
      • 3、多维数组
      • 4、将数组传递给函数


1、数组基础

1.1、数组简介

在 Go 语言中,数组是一个具有固定长度和类型的数据项序列。数组的长度被定义为类型的一部分,因此[5]int[10]int被视为不同的类型。数组在声明时会根据指定的顺序进行初始化,每个元素默认为其类型的零值。

1.2、声明数组

数组的声明遵循以下格式:

var identifier [len]type

例如,声明一个整型数组:

var arr1 [5]int
1.3、数组在内存中的结构

在内存中,数组的每个元素都连续存储。当声明一个数组,如var arr1 [5]int,其所有元素默认初始化为0。数组的长度是固定的,并且必须在编译时确定,以便系统分配内存。


2、数组操作

2.1、遍历数组

数组的遍历通常通过索引完成,使用for循环是最常见的方法:

package main
import "fmt"func main() {var arr1 [5]int// 初始化数组for i := 0; i < len(arr1); i++ {arr1[i] = i * 2}// 打印数组for i := 0; i < len(arr1); i++ {fmt.Printf("Array at index %d is %d\n", i, arr1[i])}
}

输出示例:

Array at index 0 is 0
Array at index 1 is 2
Array at index 2 is 4
Array at index 3 is 6
Array at index 4 is 8
2.2、初始化数组

如果数组的值已知,可以使用数组字面量进行初始化:

var arrAge = [5]int{18, 20, 15, 22, 16}
var arrKeyValue = [5]string{3: "Chris", 4: "Ron"}

使用key: value语法可以指定特定索引的值,未指定的索引将使用类型的零值。


3、多维数组

Go 语言支持多维数组,例如:

var matrix [3][5]int

这表示一个3行5列的二维整型数组。多维数组在Go中是矩形的,每个维度的长度必须相同。


4、将数组传递给函数

在 Go 中,直接传递一个大数组到函数通常不是性能最优的选择,因为这会涉及到拷贝整个数组的成本。更常见的做法是:

  • 传递数组的指针
  • 使用切片,这是更常见的做法

以下是通过传递数组指针的示例:

package main
import "fmt"func main() {array := [3]float64{7.0, 8.5, 9.1}x := sum(&array)fmt.Printf("The sum of the array is: %f", x)
}func sum(a *[3]float64) (sum float64) {for _, v := range a {sum += v}return
}

输出结果:

The sum of the array is: 24.600000

虽然这种方法有效,但在 Go 中更推荐使用切片,因为切片提供了更多灵活性和强大的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JL-03-Y1 清易易站

产品概述 清易易站是清易电子新研发的一体式气象站&#xff0c;坚持科学化和人文化相结合的设计理念&#xff0c;应用新检测原理研发的传感器观测各类气象参数&#xff0c;采用社会上时尚的工艺理念设计气象站的整体结构&#xff0c;实现了快速观测、无线传输、数据准确、精度较…

NCP1680AAD1R2G是一款CrM PFC控制器IC 用于驱动无桥图腾柱PFC拓扑结构

NCP1680AAD1R2G NCP1680是一个CrM PFC控制器IC&#xff0c;用于驱动无桥图腾柱PFC拓扑结构。无桥图腾柱PFC是一种功率因数校正结构&#xff0c;包括一个以PWM开关频率驱动的快速开关桥臂和一个以AC线频率工作的第二桥臂。这种拓扑结构消除了传统PFC电路输入端存在的二极管桥&am…

LabVIEW冲击响应谱分析系统

LabVIEW冲击响应谱分析系统 开发了一种基于LabVIEW开发的冲击响应谱分析系统&#xff0c;该系统主要用于分析在短时间内高量级输入力作用下装备的响应。通过改进的递归数字滤波法和样条函数法进行冲击响应谱的计算&#xff0c;实现了冲击有效持续时间的自动提取和响应谱的精准…

操作简单中医电子处方中药划价系统软件视频教程,佳易王诊所电子处方管理系统软件

操作简单中医电子处方中药划价系统软件视频教程&#xff0c;佳易王诊所电子处方管理系统软件 一、前言 以下软件操作教程以&#xff0c;佳易王中西医诊所电子处方软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、软件支持中医和西医处方…

深入探索npx:npm包执行的艺术与npm的实用差异

引言 在使用Node.js和JavaScript的生态系统中&#xff0c;npx和npm是两个常用的命令行工具&#xff0c;它们各自有着独特的用途和优势。 基础知识 npm&#xff08;Node Package Manager&#xff09;&#xff1a;是一个包管理器&#xff0c;用于管理项目中的依赖。npx&#x…

Linux `free` 命令:深入解析系统内存使用情况**

Linux free 命令&#xff1a;深入解析系统内存使用情况 在Linux系统管理中&#xff0c;了解内存的使用情况对于系统调优、性能监控以及故障排除都至关重要。free 命令是Linux系统中用于显示系统内存使用情况的常用工具。本文将深入解析 free 命令的使用方法和其输出的各项含义…

冯喜运:6.5今日黄金原油行情怎么看及日内操作策略

【黄金消息面分析】&#xff1a;周三&#xff08;6月5日&#xff09;亚市早盘&#xff0c;现货黄金窄幅震荡&#xff0c;目前交投于2328.13美元/盎司附近。黄金价格周二下跌超过1%&#xff0c;原因是美元在本周晚些时候美国就业数据公布前趋于稳定&#xff0c;该数据可能为美联…

女生适合学GIS开发吗?0基础怎么学?

最近小编在各账号后台会陆续收到一些粉丝留言。其中有些女粉在问&#xff0c;女生适合学GIS开发吗&#xff1f;会被歧视吗&#xff1f; 众所周知&#xff0c;IT行业中男生占了很大部分的比例&#xff0c;那么GIS开发行业也是这样吗&#xff0c;女生适合学习GIS开发吗&#xff…

SwiftUI 利用 Swizz 黑魔法为系统创建的默认对象插入新协议方法(五)

功能需求 在 SwiftUI 的开发中,我们往往需要借助底层 UIKit 的“上帝之手”来进一步实现额外的定制功能。比如,在可拖放(Dragable)SwiftUI 的实现中,会缺失拖放取消的回调方法让我们这些秃头码农们“欲哭无泪” 如上图所示,我们在拖放取消时将界面中的一切改变都恢复如初…

【前端 - Vue】Vuex基础入门,创建仓库的详细步骤

&#x1f680; 个人简介&#xff1a;6年开发经验&#xff0c;现任职某国企前端负责人&#xff0c;分享前端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;前端菜鸟的自我修养❣️ &#x1f4dd; 专 栏&#xff1a;vue从基础到起飞 &#x1f308; 若有帮助&…

有极性电容器的引脚极性怎么判别?

由于有极性电容器有正、负之分&#xff0c;在电路中又不能乱接&#xff0c;所以在使用有极性电容器前需要先判别出正、负极。有极性电容器的正、负极判别方法如图2—9&#xff5e;图2—11所示。 方法一&#xff1a;对于未使用过的新电容&#xff0c;可以根据引脚长短来判别。引…

Java代码优化指南

Java代码优化指南 代码优化是通过改进算法和数据结构&#xff0c;使代码运行得更快、更节省内存、更易于维护。在这方面&#xff0c;主要可以从算法优化、数据结构优化和代码层面的优化入手。本文将详细介绍这些优化方法&#xff0c;并通过具体示例说明如何在Java中进行代码优…

企业微信SOP工具:提升企业管理与运营效率的新选择

在当今这个数字化、智能化的时代&#xff0c;企业对于高效、精准的管理与运营需求日益迫切。企业微信作为一款功能强大的企业级通讯工具&#xff0c;已经深入到众多企业的日常运营中。而企业微信SOP工具&#xff08;Standard Operating Procedure&#xff0c;即标准操作流程工具…

delphi清理程序占用的内存,真的有效果.

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; //DELPHI清理释放内存小代码 procedure ClearMemory; begin {内存清理} if Win32Platform VER_PLATFORM_WIN32_NT then begin SetProcessWorkingSetSize(GetCurrentPro…

vue改造四级树状可输入table

vue改造四级树状可输入table <template><div class"dimension_wary"><div class"itemHeader"><div class"target"></div><div class"sort">X2</div><div class"weight">…

人眼是如何选择成像的

其实&#xff0c;我在前面的一篇文章中利用数学模型&#xff0c;没有具体计算过&#xff0c;讨论了该如何成像&#xff0c;但是这毕竟只是数学上的计算方式&#xff0c;跟人脑的处理方式不是一样的。我现在提出一个跟比较接近哲学的问题&#xff0c;首先人脑在不清楚什么清晰&a…

基于最大重叠离散小波变换的PPG信号降噪(MATLAB 2018)

光电容积脉搏波PPG信号结合相关算法可以用于人体生理参数检测&#xff0c;如血压、血氧饱和度等&#xff0c;但采集过程中极易受到噪声干扰&#xff0c;对于血压、血氧饱和度测量的准确性造成影响。随着当今社会医疗保健技术的发展&#xff0c;可穿戴监测设备对于PPG信号的质量…

卷积学习笔记

上下采样&#xff1a; 上采样&#xff08;Upsampling&#xff09;和下采样&#xff08;Downsampling&#xff09;是图像处理和信号处理中常用的两种技术&#xff0c;它们分别用于增加或减少数据的分辨率或采样率。 下采样&#xff08;Downsampling&#xff09; 定义&#xf…

【Kubernetes】k8s集群的污点、容忍、驱逐 以及排障思路

污点和容忍以及驱逐 一、污点&#xff08;Taint&#xff09; 污点介绍 节点亲和性&#xff0c;是Pod的一种属性&#xff08;偏好或硬性要求&#xff09;&#xff0c;它使Pod被吸引到一类特定的节点。Taint 则相反&#xff0c;它使节点能够排斥一类特定的 Pod。 Taint 和 Tol…

Word忘记保存?请使用Word隐藏备份文件

大家用Word写材料时&#xff0c;如果忘记保存&#xff0c;可以使用Word隐藏备份文件找回未保存的文件。&#xff08;仅供参考&#xff09; Windows7、8、10、11系统的设置如下&#xff1a; 执行上述操作&#xff0c;可以在word文件菜单中信息项的自动保存中找到了。上述内容…