当前位置:首页 > 科技  > 软件

我们一起聊聊Go语言中的数组和切片

来源: 责编: 时间:2024-05-17 08:59:30 233观看
导读数组定义一维数组一维数组是具有相同数据类型的固定大小的数据序列。在Go语言中,一维数组的定义形式为var arrayName [size]dataType,其中arrayName是数组的名称,size是数组的大小,dataType是数组中元素的数据类型。多维

数组

定义

一维数组

一维数组是具有相同数据类型的固定大小的数据序列。在Go语言中,一维数组的定义形式为var arrayName [size]dataType,其中arrayName是数组的名称,size是数组的大小,dataType是数组中元素的数据类型。HYX28资讯网——每日最新资讯28at.com

多维数组

多维数组是数组的数组,也就是说数组中的元素又是数组。多维数组的定义形式为var arrayName [size1][size2]...[sizeN]dataType,其中size1、size2等是各个维度的大小,dataType是数组中元素的数据类型。HYX28资讯网——每日最新资讯28at.com

使用

数组可以通过索引来访问和修改元素,索引从0开始计数。例如,对于一维数组arr,可以通过arr[index]来访问第index个元素;对于多维数组arr,可以通过arr[index1][index2]...[indexN]来访问多维数组中的元素。HYX28资讯网——每日最新资讯28at.com

package mainimport "fmt"func main() {	// 一维数组的访问和修改	arr := [5]int{1, 2, 3, 4, 5}	fmt.Println("一维数组:", arr)	fmt.Println("第二个元素:", arr[1]) // 输出:2	// 修改第三个元素为10	arr[2] = 10	fmt.Println("修改后的数组:", arr)	// 多维数组的访问和修改	matrix := [2][3]int{		{1, 2, 3},		{4, 5, 6},	}	fmt.Println("多维数组:", matrix)	fmt.Println("第二行第三个元素:", matrix[1][2]) // 输出:6	// 修改第一个元素为100	matrix[0][0] = 100	fmt.Println("修改后的多维数组:", matrix)}

上面的代码演示了如何访问和修改一维数组和多维数组中的元素。HYX28资讯网——每日最新资讯28at.com

初始化

Go语言中数组的初始化有两种方式:一种是使用数组字面量直接初始化数组,另一种是通过索引逐个赋值来初始化数组。HYX28资讯网——每日最新资讯28at.com

package mainimport "fmt"func main() {	// 使用数组字面量直接初始化数组	arr1 := [3]int{1, 2, 3}	fmt.Println("数组字面量初始化:", arr1)	// 使用索引逐个赋值来初始化数组	var arr2 [3]int	arr2[0] = 1	arr2[1] = 2	arr2[2] = 3	fmt.Println("索引逐个赋值初始化:", arr2)}

上面的代码演示了使用数组字面量和索引逐个赋值两种方式来初始化数组。HYX28资讯网——每日最新资讯28at.com

相关函数

数组的常用函数有len()和cap(),其中len()函数用于返回数组的长度,cap()函数用于返回数组的容量。数组还支持切片操作,可以使用切片语法来获取数组的子集。HYX28资讯网——每日最新资讯28at.com

package mainimport "fmt"func main() {	// 定义数组	arr := [5]int{1, 2, 3, 4, 5}	// 使用 len() 函数获取数组长度	fmt.Println("数组长度:", len(arr)) // 输出:5	// 使用 cap() 函数获取数组容量	fmt.Println("数组容量:", cap(arr)) // 输出:5	// 使用切片操作获取数组的子集	subArr := arr[1:3] // 获取从索引1到索引2(不包含索引3)的子集	fmt.Println("数组的子集:", subArr) // 输出:[2 3]}

上面的代码演示了如何使用len()和cap()函数获取数组的长度和容量,以及如何使用切片操作获取数组的子集。HYX28资讯网——每日最新资讯28at.com

切片

定义

切片是一个拥有相同类型元素的可变长度的序列。在Go语言中,切片的定义形式为var sliceName []dataType,其中sliceName是切片的名称,dataType是切片中元素的数据类型。HYX28资讯网——每日最新资讯28at.com

初始化

切片可以通过切片字面量或使用内置的make()函数来初始化。HYX28资讯网——每日最新资讯28at.com

使用切片字面量初始化切片

package mainimport "fmt"func main() {	// 使用切片字面量初始化切片	slice1 := []int{1, 2, 3, 4, 5}	fmt.Println("切片字面量初始化", slice1)}

上面的代码演示了使用切片字面量来初始化切片。切片字面量可以直接指定切片的内容。HYX28资讯网——每日最新资讯28at.com

使用 make() 函数初始化切片

package mainimport "fmt"func main() {	// 使用 make() 函数初始化切片	slice2 := make([]int, 3, 5) // 创建一个长度为3,容量为5的切片	fmt.Println("使用 make() 函数初始化", slice2)}

上面的代码演示了使用make()函数来初始化切片。使用make()函数时,需要指定切片的长度和容量。HYX28资讯网——每日最新资讯28at.com

使用

切片可以像数组一样通过索引来访问和修改元素,索引从0开始计数。例如,对于切片slice,可以通过slice[index]来访问第index个元素,并且可以通过该语法来修改切片中的元素值。HYX28资讯网——每日最新资讯28at.com

除了与数组相似的索引操作外,切片还支持动态增加或删除元素的操作。使用内置的append()函数可以向切片中添加新的元素,而使用切片的切片操作可以从切片中删除元素。这种灵活的操作使得切片在处理动态数据集合时非常方便。HYX28资讯网——每日最新资讯28at.com

以下是使用切片进行访问、修改以及动态增加元素的示例代码HYX28资讯网——每日最新资讯28at.com

package mainimport "fmt"func main() {	// 定义切片	slice := []int{1, 2, 3, 4, 5}	// 访问切片元素	fmt.Println("第三个元素:", slice[2]) // 输出:3	// 修改切片元素	slice[2] = 10	fmt.Println("修改后的切片:", slice) // 输出:[1 2 10 4 5]	// 动态增加元素	slice = append(slice, 6)	fmt.Println("增加元素后的切片:", slice) // 输出:[1 2 10 4 5 6]}

上面的代码展示了使用切片进行访问、修改以及动态增加元素的操作。HYX28资讯网——每日最新资讯28at.com

和数组的区别

  • 大小:数组的大小是固定的,而切片的大小是动态可变的。
  • 初始化:数组需要提前声明大小并分配内存空间,而切片可以动态增长或缩小。
  • 传递方式:数组作为函数参数时会进行值拷贝,而切片作为函数参数时是引用传递,不会进行值拷贝。
  • 底层实现:数组是值类型,切片是引用类型,底层数据结构不同。

这些是数组和切片在定义、初始化、使用和特性上的主要区别。HYX28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-88734-0.html我们一起聊聊Go语言中的数组和切片

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: PostgreSQL 的事务 ID 回卷,应对措施也很简单

下一篇: C# 特性(Attribute)详解及示例,你学会了吗?

标签:
  • 热门焦点
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 重估百度丨“晚熟”的百度云,能等到春天吗?

    ©自象限原创作者|程心排版|王喻可2016年7月13日,百度云计算战略发布会在北京举行,宣告着百度智能云的正式启程。彼时的会场座无虚席,甚至排队排到了门外,在场的所有人几乎都
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein“利用市场支配力量强迫服装厂商与之签订独家
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • iQOO Neo8系列新品发布会

    旗舰双芯 更强更Pro
  • iQOO Neo8系列今日官宣:首发天玑9200+ 全球安卓最强芯!

    在昨日举行的的联发科新一代旗舰芯片天玑9200+的发布会上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品将全球首发搭载这款当前性能最强大的移动平台
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
Top