百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
G

go-ordered-map

> 编程语言
开源

对 Golang 进行最佳实现的有序映射 - 即记录键被插入的顺序的映射。

673 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

对 Golang 进行最佳实现的有序映射 - 即记录键被插入的顺序的映射。

Golang 有序映射与普通映射相同,但还记录了键被插入的顺序,类似于 Python 的 collections.OrderedDict。

它提供以下功能: * 最佳的运行时性能(所有操作都是常数时间) * 最佳的内存使用(只有一个值的副本,没有不必要的内存分配) * 可以不论是从最新的还是最旧的键进行迭代,无需复制内存,可以中断迭代,并且与迭代的键数量成比例,而非有序映射的总长度 * 支持任何通用类型的键和值。如果您运行 go = 1.23,则需要使用此库的版本 >= 2.2.0,因为它使用了泛型和迭代器。

// 从最旧到最新迭代对:

// 迭代 2 对最新的对: i := 0 for pair := om.Newest(); pair != nil; pair = pair.Prev() { fmt.Printf("%s => %s\n", pair.Key, pair.Value) i++ 如果 i >= 2 { break } } // 打印: // coucou => 你好 // bar => baz // 删除所有不包含"o"在其键中的键值对 om.Filter(func(key, value string) bool { return strings.Contains(key, "o") }) // 新的迭代语法 for key, value := range om.FromOldest() { fmt.Printf("%s => %s\n", key, value) }// 打印: // foo => bar // coucou => 你好 }


An `OrderedMap`'s keys must implement `comparable`, and its values can be anything, for example:

去 type myStruct struct { 有效负载字符串 } func main() { om := orderedmap.Newint, *myStruct

om.Set(12, &myStruct{"foo"}) om.Set(1, &myStruct{"bar"}) value, present := om.Get(12) if !present { panic("应该存在的!") } fmt.Println(value.payload) // => foo for pair := om.Oldest(); pair != nil; pair = pair.Next() { fmt.Printf("%d => %s\n", pair.Key, pair.Value.payload) } // 打印: // 12 => foo // 1 => bar }

另外也值得注意

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Go

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言