github.com/songzhibin97/go-baseutils@v0.0.2-0.20240302024150-487d8ce9c082/base/bmap/README.md (about) 1 # bmap 2 3 针对map的方法封装 4 5 ## API 6 7 ### AnyMap 8 - ToMetaMap 获取底层最原始map 无论是否是衍生的safe map都不是并发安全的 9 - Keys 返回map中所有的key 10 - Values 返回map中所有的value 11 - EqualFuncByMap 传入一个原始map以及一个比较函数判断anymap与原始map是否相同 12 - EqualFuncByBMap 传入一个anymap以及一个比较函数判断anymap与传入的anymap是否相同 13 - Clear 清除map的kv 14 - CloneToMap 克隆一个完全相同的原始map 15 - CloneToBMap 克隆一个完全相同的anymap 16 - CopyByMap 传入一个原始map将原始map的kv复制到anymap中 17 - CopyByBMap 传入一个anymap将anymap的kv复制到anymap中 18 - DeleteFunc 传入一个删除函数删除map中符合条件的kv 19 - Marshal 20 - Unmarshal 21 - Size 返回键值对数量 22 - IsEmpty 判断是否为空 23 - IsExist 传入k判断是否存在 24 - ContainsKey 传入k判断是否存在 25 - ContainsValue 传入v判断是否存在 26 - ForEach 传入一个函数遍历map,最好不要在遍历过程中操作map 27 - Get 获取 k对应的value, 如果不存在返回false 28 - GetOrDefault 获取 k对应的value, 如果不存在返回defaultValue 29 - Put 设置 k对应的value,如果有会覆盖 30 - PuTIfAbsent 设置如果k对应value不存在的情况下设置成功 31 - Delete 删除k对应的value 32 - DeleteIfPresent 删除 k对应的value, 如果存在返回true 33 - MergeByMap 传入普通map根据返回进行合并 func(k, ov) 传入key和当前nmap的对应key的value值进行冲突处理 return true 进行替换 false则跳过 34 - MergeByBMap 传入anymap根据返回进行合并 func(k, ov) 传入key和当前nmap的对应key的value值进行冲突处理 return true 进行替换 false则跳过 35 - Replace 替换 k对应的value等于ov则设置为nv 36 37 ### ComparableBMap 38 - AnyBMap[K, V] 继承anymap所有api 39 - EqualByMap 传入一个原始map以及一个比较函数判断anymap与原始map是否相同 40 - EqualByBMap 传入一个anymap以及一个比较函数判断anymap与传入的anymap是否相同 41 42 ## EXAMPLE 43 ```go 44 package main 45 46 import ( 47 "fmt" 48 "github.com/songzhibin97/go-baseutils/base/bmap" 49 ) 50 51 func main() { 52 amap := bmap.NewUnsafeAnyBMap[int, int]() 53 amap.Put(1, 1) 54 fmt.Println(amap.Get(1)) // 1, true 55 fmt.Println(amap.Get(2)) // 0, false 56 fmt.Println(amap.GetOrDefault(2, 2)) // 2 57 } 58 ```