Map(没有写底层)

Posted mcmx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map(没有写底层)相关的知识,希望对你有一定的参考价值。

键值(KV)存储结构

声明
var map1 map[keyType]valueType
map是动态增长的。
未初始化的map的值是nil

初始化
map1 = make(map[keytype]valuetype)
map1 = make(map[keytype]valuetype,cap)
noteFrequency := map[string]float32
"C0": 16.35, "D0": 18.35, "E0": 20.60, "F0": 21.83,
"G0": 24.50, "A0": 27.50, "B0": 30.87, "A4": 440
不用用new,用new只会返回一个指向nil的指针。

key是可以用== != 操作符比较的类型,比如string\int\float
所以数组、结构体不能作为key,(只包含内建类型的struct是可以作为key的)
指针和接口可以作为key,如果要结构体作为key需要提供key()和hash()方法。

value可以是任意类型的


val1,isPresent = map1[key1]
返回value和一个布尔值,当包含此kv时,为v的值和true,不存在v时返回的是对应的零值和false
存值map1[key1] = value1
返回KV数目 len(map1)

从map1中删除key1
delete(map1,key1)

for key, value := range map1
...

 

排序sort包
sort.Ints( num []int)
对num进行排序

 

以上是关于Map(没有写底层)的主要内容,如果未能解决你的问题,请参考以下文章

std::map 的底层结构是啥? [关闭]

go语言的map基本使用和底层原理

goland map底层原理

map底层unorder_map底层,二者区别,为什么这样设计

Go 函数的 Map 型参数,会发生扩容后指向不同底层内存的事儿吗?

map和unordered_map性能对比