Go语言学习
道法自然前言
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言语法简单,包含了类C语法。快速的编译时间,开发效率和运行效率高。组合的思想、无侵入式的接口。
一、字典
map是一种较为特殊的数据结构,在任何一种编程语言中都可以看见他的身影,它是一种键值对结构,通过给定的key可以快速获得对应的value。
1.1定义字典
var m1 map[string]int
m2 := make(map[int]interface{
}, 100)
m3 := map[string]string{
"name": "james",
"age": "35",
}
在定义字典时不需要为其指定容量,因为map是可以动态增长的,但是在可以预知map容量的情况下为了提高程序的效率也最好提前标明程序的容量。需要注意的是,不能使用不能比较的元素作为字典的key,例如数组,切片等。而value可以是任意类型的,如果使用interface{}作为value类型,那么就可以接受各种类型的值,只不过在具体使用的时候需要使用类型断言来判断类型。
1.2字典操作
-
加入
向字典中放入元素也非常简单m3["key1"] = "v1" m3["key2"] = "v2" m3["key3"] = "v3"
-
长度
我们可以使用len来获取字典的长度。len(m3)
-
判断空
在有些情况下,我们不能确定键值对是否存在,或者当前value存储的是否就是空值,go语言中我们可以通过下面这种方式很简便的进行判断。if value, ok := m3["name"]; ok { fmt.Println(value) }
上面这段代码的作用就是如果当前字典中存在key为name的字符串则取出对应的value,并返回true,否则返回false。
-
遍历
对于一个已经存在的字典,我们如何对其进行遍历呢?可以使用下面这种方式:for key, value := range m3 { fmt.Println("key: ", key, " value: ", value) }
如果多运行几次上面的这段程序会发现每次的输出顺序并不相同,对于一个字典来说其默认是无序的
-
删除
如果已经存在与字典中的值已经没有作用了,我们想将其删除怎么办呢?可以使用go的内置函数delete来实现。delete(m3, "key1")
-
特殊
不仅如此我们还可以将函数作为值类型存入到字典中:
func