Go 泛型:Maps 包正式释出,现在可用!

IT科技类资讯2025-11-05 02:05:5983

本文转载自微信公众号「脑子进煎鱼了」,泛型作者 陈煎鱼   。包正转载本文请联系脑子进煎鱼了公众号。式释

大家好,出现我是可用煎鱼。

给大家带来一个关于泛型的泛型新消息,那就是包正:在几天前,Go 泛型的式释配套标准库 golang.org/x/exp/maps 包已经正式提交,放出来了,出现可以使用。可用

如下图:

cs.opensource.google

包代码如下:

package maps func Keys[M ~map[K]V,泛型 K comparable, V any](m M) []K {  r := make([]K, 0, len(m))  for k := range m {   r = append(r, k)  }  return r } func Values[M ~map[K]V, K comparable, V any](m M) []V {  r := make([]V, 0, len(m))  for _, v := range m {   r = append(r, v)  }  return r } func Equal[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool {  if len(m1) != len(m2) {   return false  }  for k, v1 := range m1 {   if v2, ok := m2[k]; !ok || v1 != v2 {    return false   }  }  return true } func EqualFunc[M1 ~map[K]V1, M2 ~map[K]V2, K comparable, V1, V2 any](m1 M1, m2 M2, eq func(V1, V2) bool) bool {  if len(m1) != len(m2) {   return false  }  for k, v1 := range m1 {   if v2, ok := m2[k]; !ok || !eq(v1, v2) {    return false   }  }  return true } func DeleteFunc[M ~map[K]V, K comparable, V any](m M, del func(K, V) bool) {  for k, v := range m {   if del(k, v) {    delete(m, k)   }  } }  Keys:返回 map 的键值内容,键值将以不确定的包正顺序出现。 Values:返回 map 的式释值,亿华云值将以不确定的出现顺序出现。 Equal:检查两个地图是可用否包含相同的键/值对,内部会使用 == 来比较数值。 EqualFunc:EqualFunc与 Equal 方法类似,但使用闭包方法来比较数值,键值仍然用 == 来比较。 DeleteFunc:删除 map 中闭包方法返回 true 的任何键/值对。 func Clear[M ~map[K]V, K comparable, V any](m M) {  for k := range m {   delete(m, k)  } } func Clone[M ~map[K]V, K comparable, V any](m M) M {  r := make(M, len(m))  for k, v := range m {   r[k] = v  }  return r } func Copy[M ~map[K]V, K comparable, V any](dst, src M) {  for k, v := range src {   dst[k] = v  } } 

Clear:清除从 map 中删除所有条目,使之为空。

Clone:返回一个 map 的副本,这是一个浅层克隆,新拷贝出来的的亿华云计算键和值使用普通的赋值来设置。

Copy:复制 src 中的所有键/值对,并将其加入 dst。当 src 中的一个键已经存在于 dst 中时,dst 中的值将被与 src 中的键相关的值所覆盖。

本次 Go 泛型库 maps 的更新,主要包含了泛型最新的特性的迭代,也就是 “近似元素”,源码地址:https://cs.opensource.google/go/x/exp/+/master:maps/maps.go。源码库

本文地址:http://www.bzve.cn/html/694e63198674.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

探究电脑密码错误的原因与解决方法(密码保护下的安全隐患与应对策略)

前端以后也要多线程编程了么?

鸿蒙开源全场景应用开发—视频渲染

还在用BeanUtils拷贝对象?MapStruct才是王者!

电脑开机不出密码错误的原因与解决方法(探究密码错误问题及有效解决方案)

不要错过的六个优秀Java新功能

客户案例 | 宜家家居使用 PowerApps 模型驱动应用,优化厨房区购物体验

高并发中的 限流、熔断、降级、预热、背压!

友情链接

滇ICP备2023006006号-39