Go语言Map的基本使用
1、定义Map
-
map[key]value形式申明
-
make方式申明
package main
import "fmt"
func main() {
m := map[string]string{"a": "1", "b": "2"} //冒号:定义
fmt.Println(m) //map[a:1 b:2]
m1 := make(map[string]string) //make关键字定义
fmt.Println(m1) //map[]
var m2 = make(map[string]string) //make关键字定义
fmt.Println(m2) //map[]
var m3 map[string]string
fmt.Println(m3) //map[]
fmt.Println(m3 == nil) //true
}
2、Map的遍历
使用range遍历(Map是无序的)
package main
import "fmt"
func main() {
m := map[string]string{"a": "1", "b": "2"} //冒号:定义
fmt.Println(m) //map[a:1 b:2]
for k, v := range m {
fmt.Println(fmt.Sprintf("key:%s, value:%s", k, v))
}
for k, _ := range m {
fmt.Println(fmt.Sprintf("key:%s", k))
}
for _, v := range m {
fmt.Println(fmt.Sprintf("value:%s", v))
}
}
3、根据key取value以及判断是否存在key
package main
import "fmt"
func main() {
m := map[string]string{"a": "1", "b": "2"} //冒号:定义
fmt.Println(m) //map[a:1 b:2]
a := m["a"] //1
fmt.Println(a)
c := m["c"] //""空串,并不会报错
fmt.Println(c)
//可以通过判断exist是否存在该key
d, exist := m["d"] //""空串,并不会报错
fmt.Println(d, exist)//根据exist是不是true判断是否存在
}
4、删除key
package main
import "fmt"
func main() {
m := map[string]string{"a": "1", "b": "2"} //冒号:定义
fmt.Println(m) //map[a:1 b:2]
delete(m, "a") //删除存在的key
fmt.Println(m) //map[b:2]
delete(m, "c") //删除不存在的key也不会报错
fmt.Println(m) //map[b:2]
}
5、可以作为Map的key的条件
-
map使用哈希表,必须可以比较相等
-
除了slice、map、function的内建类型都可以作为key
-
自定义的Struct类型,不包括slice、map、function字段,也可以作为key