
有的Go 生态中有几个成熟的有序 Map 第三方库可以替代 Java 的 LinkedHashMap主流第三方库对比库 Star 数 特点 适用场景[elliotchance/orderedmap](https://github.com/elliotchance/orderedmap) 2k 最流行API 类似 Java LinkedHashMap支持泛型 通用首选[wk8/go-ordered-map](https://github.com/wk8/go-ordered-map) 800 支持 JSON 序列化保持顺序兼容 json.Marshaler 需要 JSON 交互[iamolegga/gomap](https://github.com/iamolegga/gomap) 200 线程安全支持 TTL 过期 并发场景[yitter/IdGenerator](https://github.com/yitter/IdGenerator) 作者的 gomap - 国人维护中文文档 国内项目---1. elliotchance/orderedmap推荐go get github.com/elliotchance/orderedmap/v2package mainimport (fmtgithub.com/elliotchance/orderedmap/v2)func main() {om : orderedmap.NewOrderedMap[string, int]()// 插入保持顺序om.Set(b, 2)om.Set(a, 1)om.Set(c, 3)// 按插入顺序遍历for el : om.Front(); el ! nil; el el.Next() {fmt.Printf(%s: %d\n, el.Key, el.Value)}// 输出: b:2, a:1, c:3插入顺序// 反向遍历for el : om.Back(); el ! nil; el el.Prev() {fmt.Println(el.Key)}}---2. wk8/go-ordered-mapJSON 友好go get github.com/wk8/go-ordered-map/v2import github.com/wk8/go-ordered-map/v2om : orderedmap.New[string, int]()om.Set(z, 26)om.Set(a, 1)// JSON 序列化保持顺序jsonBytes, _ : json.Marshal(om)// {z:26,a:1} ← 顺序不变---3. 国人库golang.org/x/exp/maps官方实验Go 官方实验包也提供了排序辅助非真正有序 mapgo get golang.org/x/expimport golang.org/x/exp/mapsm : map[string]int{b: 2, a: 1}keys : maps.Keys(m) // 提取所有 keysort.Strings(keys) // 仍需手动排序---选型建议需求 推荐库简单保持插入顺序 elliotchance/orderedmap需要 JSON 序列化保持顺序 wk8/go-ordered-map线程安全 高级功能 iamolegga/gomap不想依赖第三方 自己用 []string map[string]V 封装最常用的是 elliotchance/orderedmapAPI 设计直观社区活跃生产环境验证充分。