Golang Maps(Aka HashMap)及示例
Golang Maps(Aka HashMap)及示例
Go 提供了实现哈希表的内置映射类型Map。Golang 映射是无序的数据集,可以用来存储键/值对中的数据。因为它是一个无序集合,这意味着无法预测 键/值 对返回的顺序。
一个简单的 map 声明如下所示-
1map[KeyType]ValueType
其中 KeyType 可以是任何可比较(comparable) 的类型。 ValueType 可以是任何类型。
让我们看一个使用 Golang Map 的简单示例。
1package main
2
3import (
4 "fmt"
5)
6
7func main() {
8
9 // Creating a HashMap of String and Integer
10 var animal = make(map[string]int)
11
12 // Inserting values in hashmap
13 animal["Dog"] = 10
14 animal["Cat"] = 13
15 animal["Fish"] = 20
16
17 // Iterating Hashmap
18 for key, value := range animal {
19 fmt.Println("We have", value, key)
20 }
21
22 // Getting Value corresponding to Key
23 fmt.Println("Total Dogs ", animal["Dog"])
24
25 var sum int = 0
26 // Performing operation on hashmap
27 for _, value := range animal {
28 sum += value
29 }
30 fmt.Println("Total pets ", sum)
31
32}
1Output :
2We have 20 Fish
3We have 10 Dog
4We have 13 Cat
5Total Dogs 10
6Total pets 43
Compiling & Running
手动编译源代码:
1$ go build hash.go
2$ ./hash
无需手动编译即可运行:
1$ go run hash.go
更多关于 Golang Map 的资料
要使用一些数据初始化映射,我们可以使用如下的映射文本
1colorCode := map[string]int{
2 "red": 3711,
3 "black": 2138,
4 "pink": 1908,
5 "green": 912,
6}
当使用任何一种循环时,我们都不能预测 Golang Map的迭代顺序。当在 map 上迭代时,我们可能得到与前一个输出不同的输出。有必要指出,Golang Map不宜同时使用。当我们试图同时读写它们时会发生什么并没有定义。
Deleting keys from Golang maps
1package main
2
3import (
4 "fmt"
5)
6
7func main() {
8
9 // Creating a HashMap of String and Integer
10 var colorCode = make(map[string]int)
11
12 // Inserting values in hashmap
13 colorCode["Red"] = 2
14 colorCode["Blue"] = 4
15 colorCode["Green"] = 8
16 colorCode["Orange"] = 16
17 colorCode["Violet"] = 32
18 colorCode["Pink"] = 64
19 colorCode["Yellow"] = 128
20
21 // Iterating Hashmap
22 for key, value := range colorCode {
23 fmt.Println("We have", value, key)
24 }
25
26 // Deleting values
27 delete(colorCode, "Violet")
28 fmt.Println("------After Deletion------")
29
30 for key, value := range colorCode {
31 fmt.Println("We now have", value, key)
32 }
33
34}
1We have 4 Blue
2We have 8 Green
3We have 16 Orange
4We have 32 Violet
5We have 64 Pink
6We have 128 Yellow
7We have 2 Red
8------After Deletion------
9We now have 2 Red
10We now have 4 Blue
11We now have 8 Green
12We now have 16 Orange
13We now have 64 Pink
14We now have 128 Yellow
在上面的例子中,我们将紫色从Map的代码中移除。
手动编译源代码:
1$ go build hashmapEx.go
2$ ./hashmapEx
无需编译即可运行:
1$ go run hashmapEx.go
source: Golang Maps (Aka HashMap)