Go map类型
本文最后更新于:3 年前
Go map 类型
基本定义
- 类似其它语言中的哈希表或者字典,以 key=>value 形式存储数据
- 格式为 map[keyType]valueType
- key 必须是支持 == 或者 != 比较运算的类型,不可以是函数,map 或者 slice
- map 使用 make() 创建,支持 := 这种简写的方式
- map 是无序的,每次打印出来的 map 都会不一样,它不能通过 index 获取,而必须通过 key 获取
- map 的长度是不固定的,也就是和 slice 一样,也是一种引用类型
- 内置的 len 函数同样适用于 map,返回 map 拥有的 key 的数量
- map 的值可以很方便的修改,通过 mapType[“one”] = 11 可以很容易的把 key 为 one 的值改为 11
- 和 slice 一样,如果两个 map 同时指向同一个底层数据,那么任何一个改变.另一个也会改变
代码练习
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| var numbers map[string]int
numbers = make(map[string]int]
numbers := make(map[string]int)
numbers["one"] = 1 numbers["two"] = 2
fmt.Println(numbers["one"])
rating := map[string]float32{"C": 5, "Go": 4.5, "Python": 4.5, "PHP": 2}
csharpRating, ok := rating["C++"] if ok { fmt.Println("输出ok的值", csharpRating) } else { fmt.Println("没找到对应的OK的值") } delete(rating, "C") fmt.Println(rating["C"])
fmt.Println(len(rating))
m := make(map[string]string) m["Hello"] = "你好" m1 := m m1["Hello"] = "不好"
mapa := map[string]int{"one":1,"two":2} mapb := map[string]int{"yi": 1, "er": 2} if mapa["one"] == mapb["yi"] { fmt.Println("可以比较") } if mapa["one"] != mapb["er"] { fmt.Println("可以比较") }
|