Map

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)
    }
}

本文访问量

本站总访问量

本站总访客数