Map #
Golang 中的 map,实际上就是一个 hashtable
在 golang 中,当 map 作为形参时,虽然是值传递,但是由于 make () 返回的是一个指针类型
// makemap implements Go map creation for make(map[k]v, hint).
// If the compiler has determined that the map or the first bucket
// can be created on the stack, h and/or bucket may be non-nil.
// If h != nil, the map can be created directly in h.
// If h.buckets != nil, bucket pointed to can be used as the first bucket.
func makemap(t *maptype, hint int, h *hmap) *hmap {
if hint < 0 || hint > int(maxSliceCap(t.bucket.size)) {
hint = 0
}
...
}
删除 map 元素 #
delete(map, key)
清空 map #
Go 语言中并没有为 map 提供任何清空所有元素的函数、方法, 清空 map 的唯一办法就是重新 make 一个新的 map, 不用担心垃圾回收的效率,Go 语言中的并行垃圾回收效率比写一个清空函数要高效的多。
获取 keys #
package main
func main() {
mymap := make(map[int]string)
keys := make([]int, 0, len(mymap))
for k := range mymap {
keys = append(keys, k)
}
}
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。