在看go圣经时, 有这样一句话: A map holds a set of key/value pairs and provides constant-time operations to store, retrieve or test for an item in the set. 看完这句话, 应该能立即感觉到go map是hash map, 而非rb-tree map.
来看一个简单的程序:
package main
import (
"fmt"
)
func main() {
m := make(map[int] string)
m[2] = "123"
m[1] = "456"
m[3] = "789"
for key, value := range m {
fmt.Println(key, value)
}
}
结果是:
2 123
1 456
3 789
这很好, 没有排序, 因为它是hash map而非rb-tree map.
关于hash map, 我们之前已经进行了非常详细的介绍, 故不再赘述。