Go 语言数组基础教程 - 数组的声明、初始化和使用方法

数组用于在单个变量中存储相同类型的多个值,而不是为每个值声明单独的变量。

声明数组

在Go中,有两种声明数组的方式:

  1. 使用var关键字:

语法

var array_name = [length]datatype{values} // 这里定义了长度

或者

var array_name = [...]datatype{values} // 这里长度是隐含的

  1. 使用:=符号:

语法

array_name := [length]datatype{values} // 这里定义了长度

或者

array_name := [...]datatype{values} // 这里长度是隐含的

注意:长度指定了数组中要存储的元素数量。在Go中,数组具有固定的长度。数组的长度可以通过一个数字来定义,也可以是隐含的(这意味着编译器根据值的数量来决定数组的长度)。

数组示例
这个示例声明了两个具有定义长度的数组(arr1和arr2):

package mainimport "fmt"func main() {var arr1 = [3]int{1, 2, 3}arr2 := [5]int{4, 5, 6, 7, 8}fmt.Println(arr1)fmt.Println(arr2)
}

输出:

[1 2 3]
[4 5 6 7 8]

示例
这个示例声明了两个隐含长度的数组(arr1和arr2):

package mainimport "fmt"func main() {var arr1 = [...]int{1, 2, 3}arr2 := [...]int{4, 5, 6, 7, 8}fmt.Println(arr1)fmt.Println(arr2)
}

输出:

[1 2 3]
[4 5 6 7 8]

示例
这个示例声明了一个字符串数组:

package mainimport "fmt"func main() {var cars = [4]string{"Volvo", "BMW", "Ford", "Mazda"}fmt.Print(cars)
}

输出:

[Volvo BMW Ford Mazda]

访问数组元素

您可以通过引用索引号来访问特定的数组元素。

在Go中,数组索引从0开始。这意味着[0]是第一个元素,[1]是第二个元素,依此类推。

示例

这个示例展示了如何访问prices数组中的第一个和第三个元素:

package mainimport "fmt"func main() {prices := [3]int{10, 20, 30}fmt.Println(prices[0])fmt.Println(prices[2])
}

输出:

10

30

更改数组元素

您还可以通过引用索引号来更改特定数组元素的值。

示例

这个示例展示了如何更改prices数组中第三个元素的值:

package mainimport "fmt"func main() {prices := [3]int{10, 20, 30}prices[2] = 50fmt.Println(prices)
}

输出:

[10 20 50]

数组初始化

如果数组或其元素在代码中没有被初始化,它将被分配其类型的默认值。

提示:int的默认值是0,string的默认值是""。

示例

package mainimport "fmt"func main() {arr1 := [5]int{}           // 未初始化arr2 := [5]int{1, 2}       // 部分初始化arr3 := [5]int{1, 2, 3, 4, 5} // 全部初始化fmt.Println(arr1)fmt.Println(arr2)fmt.Println(arr3)
}

输出:

[0 0 0 0 0]

[1 2 0 0 0]

[1 2 3 4 5]

仅初始化特定元素

也可以仅初始化数组中的特定元素。

示例

这个示例仅初始化数组的第二和第三个元素:

package mainimport "fmt"func main() {arr1 := [5]int{1: 10, 2: 40}fmt.Println(arr1)
}

输出:

[0 10 40 0 0]

示例解释

上面的数组有5个元素。

1:10 表示:将10赋值给数组索引1(第二个元素)。

2:40 表示:将40赋值给数组索引2(第三个元素)。

查找数组的长度

使用len()函数可以找到数组的长度:

示例

package mainimport "fmt"func main() {arr1 := [4]string{"Volvo", "BMW", "Ford", "Mazda"}arr2 := [...]int{1, 2, 3, 4, 5, 6}fmt.Println(len(arr1))fmt.Println(len(arr2))
}

输出:

4
6

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

在这里插入图片描述

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

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

相关文章

Python入门学习篇(一)——注释变量输入输出

1 注释 1.1 作用 a 方便他人和自己阅读代码 b 告诉编译器这部分内容是不用执行的。1.2 单行注释 # 注释内容1.3 多行注释(引号) 1.3.1 三对双引号 """ 注释内容 """1.3.2 三对单引号 注释内容 1.4 pycharm快捷键使用 ctrl/ 多行注释(以# …

PPT基础入门

目录 相关设置快捷键shift 快捷键Ctrl 快捷键Ctrl Shift 组合快捷键快捷键总结 相关设置 设置撤回次数 自动保存 图片压缩 字体嵌入:目的是在不同的电脑上保留已经设置好的字体 多格式导出 (1)可以导出PDF (2)可以导…

Java的JDBC编程—连接Mysql数据库

目录 一、 Java的数据库编程:JDBC 二、JDBC工作原理 三、 JDBC使用 四、JDBC使用步骤总结 五. JDBC常用接口和类 5.1 JDBC API 5.2 数据库连接Connection 5.3 Statement对象 5.4 ResultSet对象 一、 Java的数据库编程:JDBC JDBC,即J…

linux环境下软件安装之Mysql8

1、官网下载(右键最后一页的超链接) 2、通过命令行下载 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz3、解压 1.将.xz解压为.tar xz -d mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz2.将.tar解压为普通文件 tar -xv…

postman查询数据库-Xmysql

步骤1:安装node.js 下载地址:Download | Node.js步骤2:安装Xmysql工具,命令行输入 npm install -g xmysql ,过程中会自动安装相关依赖;步骤3:连接数据库 xmysql -h ip -u 账号 -p 密码 -d 库名 如下表示连…

js-webApi 笔记2之DOM事件

目录 1、表单事件 2、键盘事件 3、事件对象 4、排他思想 5、事件流 6、捕获和冒泡 7、阻止默认和冒泡 8、事件委托 9、事件解绑 10、窗口加载事件 11、窗口尺寸事件 12、元素尺寸和位置 13、窗口滚动事件 14、日期对象 15、节点 16、鼠标移入事件 1、表单事件 获取…

2023.11.18 每日一题(AI自生成应用)【C++】【Python】【Java】【Go】 动态路径分析

目录 一、编程挑战:动态时间序列分析 实际应用: 实现提示: 二、实现 1. C 2. Python 3. JAVA 4. Go 一、编程挑战:动态时间序列分析 问题描述: 假设你是一名软件工程师,需要开发一个应用来分析和预…

《Deep learning for fine-grained image analysis: A survey》阅读笔记

论文标题 《Deep learning for fine-grained image analysis: A survey》 作者 魏秀参,旷世研究院 初读 摘要 细粒度图像分析(FGIA)的任务是分析从属类别的视觉对象。 细粒度性质引起的类间小变化和类内大变化使其成为一个具有挑战性的…

鸿蒙ToastDialog内嵌一个xml页面会弹跳到一个新页面《解决》

ToastDialog 土司组件 1.问题展示2.代码展示3.问题分析 1.问题展示 0.理想效果 错误效果: 1.首页展示页面 (未点击按钮前) 2.点击按钮之后&#xff0c;弹窗不在同一个位置 2.代码展示 1.点击按钮的 <?xml version"1.0" encoding"utf-8"?> <…

场景交互与场景漫游-场景漫游器(6)

场景漫游 在浏览整个三维场景时&#xff0c;矩阵变换是非常关键的&#xff0c;通过适当的矩阵变换可以获得各种移动或者渲染效果。因此&#xff0c;在编写自己的场景漫游操作器时&#xff0c;如何作出符合逻辑的矩阵操作器是非常重要的&#xff0c;但这对初学者来说还是有一定难…

37 关于 undo 日志

前言 undo 和 redo 是在 mysql 中 事务, 或者 异常恢复 的场景下面 经常会看到的两个概念 这里 来看一下 undo, undo 主要是用于 事务回滚 的场景下面 测试表结构如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(128) DEFAULT NUL…

YB4019是一款完整的单电池锂离子恒流/恒压线性充电器电池

YB4019 耐压18V 1A线性双节8.4V 锂电充电芯片 概述&#xff1a; YB4019是一款完整的单电池锂离子恒流/恒压线性充电器电池。底部采用热增强ESOP8封装&#xff0c;外部组件数量低使YB4019成为便携式应用的理想选择。此外&#xff0c;YB4019设计用于在USB电源规格范围内工作。Y…