字典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{ {"张三", "李四"}, {"王五", "赵六"}, {"孙七", "周八"}, } 复制代码
我们可以把二维数组想象成多行的一维数组。