Go+字典、数组
【摘要】 字典Map 概述 字典是Go+内置的一种数据结构,他指的是一组键值对无序的集合。他的基本格式是map[key的类型]value的类型,字典和切片比较类似,切片是用索引来进行读写操作的,而字典是用key来进行读写操作的。 map的相关使用 我们有两种方式定义map:使用关键字定义。使用make()函数。 使用关键字 我们使用这个方法定义map出来的时候,如果我们没有进行初始...
字典Map
概述
字典是Go+内置的一种数据结构,他指的是一组键值对无序的集合。他的基本格式是map[key的类型]value的类型
,字典和切片比较类似,切片是用索引来进行读写操作的,而字典是用key来进行读写操作的。
map的相关使用
我们有两种方式定义map:
- 使用关键字定义。
- 使用
make()
函数。
使用关键字
我们使用这个方法定义map出来的时候,如果我们没有进行初始化的时候,这个map是一个空的map,也就是一个nil的map,我们是无法使用一个空的map进行存储键值对的,他的语法格式如下:
var 变量名 map[key的类型]value的类型
var address map[string]string // 我们就定义了一个Stirng类型的key和Stirng的value的map
使用make函数
我们也可以使用内置函数去定义一个map,使用这个方法定义一个map可以避免上面的问题,所以我们一般使用这个方法去定义一个map,他的语法如下:
变量名 := make(map[key的类型]value的类型)
address := make(amp[string]string)
设置值
设置值我们就是根据key
来进行设置的。
字典名["key值"] = "value值"
name["zs"] = "张三"
取值
studentName = name["zs"]
删除某个key
说完了增加,我们来说说删除,删除一个key
我们可以使用内置函数delete()
函数来进行删除。他的语法格式如下:
delete(map的名称,"需要删除的key")
delete(name,"zs")
练习
name := make(map[string]string)
name["zs"] = "张三"
name["ls"] = "李四"
println(name) // map[ls:李四 zs:张三]
数组
概述
Go+提供了一种长度固定的数据结构结构,他就是数组,他可以用于存放多个相同类型的数据,比如我们要存放100个同学的姓名,我们需要name1、name2、name3…这样来命名,略显繁琐,遇到这种情况,我们可以直接使用数组来进行存储。我们再根据索引(下标)去取值,他的下标是从0开始的,第一个下标是1,初学者可能不是很习惯这种方式。
声明数组
我们在声明数组的需要同时指定元素个数、元素类型,已经定义长度是可以更改的,他的语法格式如下:
var 变量名 [100] string
var name [100] string
这样我们就定义了一个名称叫name,长度为100,数据类型为String的一维数组。
数组初始化
定义完了数组,我们需要对数组进行初始化,他有两种初始化的方式:
var name = [100]string{"zs","li","ww"}
// 或者也可以使用这一种
name := [100]string{"zs","li","ww"}
要注意的是,我们在对数组进行初始化的时候,我们初始化的量不能超过我们设置的容量大小,也就是说{}
里面的值的数量<=[]
里面的数量。
如果我们在定义之前,确实无法知道确切的长度的时候,我们可以使用...
来作为数组的长度,表示告诉Go+我不知道接下来我定义的数组长度有多大,Go+会自动根据你传进来的值进行判断。
var name = [...]string{"zs","li","ww"}
// 或者也可以使用这一种
name := [...]string{"zs","li","ww"}
如果我们给中国数组设置了长度的话,我们可以通过下标给指定的元素设置长度。
name := [100]string{1:"zs",99:"ls"}
二维数组
除了一维数组以外的其他数组我们都称之为多维数组,而多维数组种,我们使用最多的就是二维数组,所谓二维数组就是数组里面嵌套一个数组,他可以实现一些比较复杂的需求。他的定义方式也很简单:
name := [3][2]string{
{"张三", "李四"},
{"王五", "赵六"},
{"孙七", "周八"},
}
我们可以把二维数组想象成多行的一维数组。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)