上一篇文章 主要学习了Go语言的结构体以及结构体指针,本篇文章主要学习Go语言的切片以及Map。
Go语言数组的长度不可改变,但是这在一些特定场景中就不太适用,比如我们现在有一款电商商品,想统计用户的消费记录(每个用户的消费记录可能不一样,有的一天几十单有的一个季度就几单)Go语言团队基于此中提供了相较于一种灵活,功能强悍的内置类型切片("也称动态数组",这个可以理解为Java的List)。
与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
如何定义切片?
var 切片变量名 [ ] 数据类型 = make([ ] 数据类型, len)
也可以简写为 切片变量名 := make([ ] 数据类型, len)
或者直接:切片变量名 := [ ] 数据类型 { 1,2,3 }
我们可以通过切片的索引获取新的切片:
其中 红色矩形内的代码 是通过我们定义好的切片,然后使用 s[0:3] 获取新的切片。这里的0代表的是startIndex 也就是切片的开始索引;3代表的是endIndex,也就是结束索引
len() 和 cap() 函数
切片是可索引的,可以通过 len() 方法获取长度。
切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。
append() 和 copy() 函数
既然切片的长度是不固定的,那么它肯定有添加元素的方法。Go语言中,切片添加元素的方法是使用 append( )。
另外,切片也是允许拷贝的,拷贝切片使用的方法是copy( )。
下面的代码,首先初始化一个空切片,然后对切片的元素进行添加 然后copy到新的切片,最后打印切片属性值。
如何遍历切片?
简单介绍完了切片,下面学习GO语言的Map(类似于Java中的Map,一个key对应一个value)
Map 是一种无序的键值对集合。Map最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。但是,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
如何定义 Map?以下两种方式都可以
可以使用内建函数 make :var map_变量名 map[key_数据类型]value数据类型
也可以使用 map 关键字来定义 : 变量名 := make(map[key_数据类型]value数据类型)
以下代码是Map初始化的两种写法以及向Map添加元素,根据key删除元素
如何遍历Map?遍历Map可以使用range关键字 进行遍历 代码如下:
本篇文章主要学习的是Go语言的切片和Map,切片本质就是一个长度不确定的动态数组,类似于Java的List;而Map也类似于Java中的Map,属于key - value 对应的结构模式。计算机语言的互通性体现在方方面面,一些思想都是互通与传承的。
如果这篇文章对你有帮助,希望各位看官留下宝贵的star,谢谢。
Ps:著作权归作者所有,转载请注明作者, 商业转载请联系作者获得授权,非商业转载请注明出处(开头或结尾请添加转载出处,添加原文url地址),文章请勿滥用,也希望大家尊重笔者的劳动成果