map映射操作
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
键必须是支持相等运算符 (“==”、”!=”) 类型, 如 number、string、 pointer、array、struct,以及对应的 interface。
值可以是任意类型,没有限制。
定义map映射
方法一,声明一个map映射
1 2 3 4
| func main() { var m map[string]float64 fmt.Printf("%#v", m) }
|
方法二,先声明后初始化map映射
1 2 3 4 5
| func main() { var m map[int]string m = map[int]string{1: "Go语言", 2: "Python", 3: "C#"} fmt.Println(m) }
|
方法三,通过make函数来定义map映射
1 2 3 4
| func main() { sources := make(map[string]int) fmt.Println(sources) }
|
方法四,通过:=声明并初始化map映射
1 2 3 4
| func main() { m := map[string]int{"张三": 60, "李四": 70, "王五": 80} fmt.Println(m) }
|
方法五,定义一个空接口map可以接收任意类型数据
1 2 3 4 5 6 7
| MapJson := map[string]interface{}{ "姓名": "张三", "年龄": 18, "生日": "2000-01-01", "城市": []string{"上海", "北京"}, }
|
操作map映射
判断map映射指定的key是否存在
1 2 3 4 5 6
| func main() { m := map[string]int{"张三": 60, "李四": 70, "王五": 80} v, ok := m["张三"] fmt.Println(v, ok) }
|
对map元素的增、删、改、查操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| func main() { m := map[string]int{"张三": 60, "李四": 70, "王五": 80}
m["赵六"] = 90 fmt.Println(m)
delete(m, "李四") fmt.Println(m)
m["李四"] = 100 fmt.Println(m)
fmt.Println(m["王五"]) }
|
map元素的遍历
1 2 3 4 5 6
| func main() { m := map[int]string{1: "zhangsan", 2: "lisi", 3: "wangwu"} for k, v := range m { fmt.Println(k,v) } }
|