当前位置: 首页 > news >正文

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知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

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

http://www.lryc.cn/news/146594.html

相关文章:

  • 04架构管理之分支管理实践-一种git分支管理最佳实践
  • D.OASIS City 和 Warrix 在The Sandbox 庆祝 Rise of the 10th Legend十周年
  • Git基本操作(Idea版)
  • NSS [羊城杯 2020]easyser
  • 理解底层— —Golang的log库,二开实现自定义Logger
  • RabbitMQ---Spring AMQP
  • C语言练习题解析:挑战与突破,开启编程新篇章!(2)
  • sqlite3 加密访问
  • clickhouse 系列1:clickhouse v21.7.5.29 源码编译
  • servlet初体验之环境搭建!!!
  • 宁芝 NIZ 键盘开机需要重新插拔 USB 线才能使用
  • R编程教程_编程入门自学教程_菜鸟教程-免费教程分享
  • [CMake教程] CMake列表 - list
  • 报错 - net::ERR_ABORTED 500 (Internal Server Error)
  • 【Java Easypoi Apache poi】 Word导入与导出
  • Java稀疏数组
  • 内存管理框架 --- 基础知识
  • React + Next.js 搭建项目(配有对比介绍一起食用)
  • 【Java】Java基础
  • Spring-SpringBoot-SpringMVC-MyBatis常见面试题
  • 15.MyCat数据库分片
  • 【Python】PySpark
  • pycharm 打开Terminal时报错activate.ps1,因为在此系统上禁止运行脚本,并因此无法进入虚拟环境
  • [C++][C#]yolox TensorRT C++ C#部署
  • 根据源码,模拟实现 RabbitMQ - 网络通讯设计,自定义应用层协议,实现 BrokerServer (8)
  • MongoDB入门
  • vr智慧党建主题展厅赋予企业数字化内涵
  • go中mutex的sema信号量是什么?
  • LeetCode笔记:Weekly Contest 360
  • 【树DP】2021ICPC南京 H