map
以后都在 github 更新,请戳 go map 实现原理用
目录
相关位置文件
- src/runtime/map.go
- src/runtime/map_fast32.go
- src/runtime/map_fast64.go
- src/runtime/map_faststr.go
- src/runtime/type.go
内存构造
map 类型的实现根据键的类型不同而有细微的差异, 总体上是相同的
example % cat my_dict.go
package main
import "fmt"
func main() {
m1 := make(map[int]string)
for i := 0; i < 2; i++ {
m1[i] = "aaa"
}
m1[300] = "aaa"
m1[400] = "bbb"
m2 := make(map[int]string)
m2[300] = "ccc"
m3 := make(map[int]int)
m3[300] = 500
}
m1, m2 拥有相同的 maptype
, m3 则是另一个不同的 maptype
, maptype
不会和任意一个实例进行绑定, 在你进行变量声明的时候, 编译器已经知道了实例对应的类型, maptype
只在运行时起辅助作用
这是 hmap
的构造
介绍
func main() {
m1