golang 每日一庫之 iancoleman-orderedmap

github.com/iancoleman/orderedmap 是一個 Go 語言庫,提供了一個有序字典(OrderedMap)實現,區別於 Go 語言內建的 map 類型,內建的 map 是無序的。該庫的 OrderedMap 能夠保持元素的插入順序,因此適用於需要按插入順序遍歷元素的場景。

主要特點:

  1. 有序性:OrderedMap

     保證元素的插入順序,和內建的 map 類型不同,後者沒有插入順序的保障。

  2. 支持常見操作:

     提供了對元素的插入、刪除、更新等常見操作的支持。

  3. 可以與普通的 map 互操作:

     可以很容易地將 OrderedMap 轉換爲普通的 map,也可以從 map 初始化一個 OrderedMap

  4. API 簡潔:

     提供了簡單易用的 API,常見的 GetSetDeleteClearLen 等操作都可以通過該 API 輕鬆完成。

  5. 支持遍歷:OrderedMap

     支持按插入順序進行遍歷,因此可以在需要按照添加順序訪問元素的場景中使用。

使用示例:

package main

import (
    "encoding/json"
    "github.com/iancoleman/orderedmap"
)

func main() {

    // use New() instead of o := map[string]interface{}{}
    o := orderedmap.New()

    // use SetEscapeHTML() to whether escape problematic HTML characters or not, defaults is true
    o.SetEscapeHTML(false)

    // use Set instead of o["a"] = 1
    o.Set("a", 1)

    // add some value with special characters
    o.Set("b""\\.<>[]{}_-")

    // use Get instead of i, ok := o["a"]
    val, ok := o.Get("a")

    // use Keys instead of for k, v := range o
    keys := o.Keys()
    for _, k := range keys {
        v, _ := o.Get(k)
    }

    // use o.Delete instead of delete(o, key)
    o.Delete("a")

    // serialize to a json string using encoding/json
    bytes, err := json.Marshal(o)
    prettyBytes, err := json.MarshalIndent(o, """  ")

    // deserialize a json string using encoding/json
    // all maps (including nested maps) will be parsed as orderedmaps
    s := `{"a": 1}`
    err := json.Unmarshal([]byte(s), &o)

    // sort the keys
    o.SortKeys(sort.Strings)

    // sort by Pair
    o.Sort(func(a *orderedmap.Pair, b *orderedmap.Pair) bool {
        return a.Value().(float64) < b.Value().(float64)
    })
}

常見方法:

  1. New()

    : 創建一個新的 OrderedMap

  2. Set(key, value)

    : 向 OrderedMap 中添加或更新一個元素。

  3. Get(key)

    : 獲取 OrderedMap 中指定鍵的值。

  4. Delete(key)

    : 刪除指定鍵的元素。

  5. Len()

    : 返回 OrderedMap 中元素的數量。

  6. Iterator()

    : 獲取一個迭代器,允許按順序遍歷 OrderedMap 中的元素。

適用場景:

安裝方法:

你可以通過 Go 的包管理工具安裝該庫:

go get github.com/iancoleman/orderedmap

總結:

orderedmap 庫對於需要按插入順序處理數據的場景非常有用,它提供了簡單的 API 和靈活的功能,使得在 Go 中進行有序映射操作變得更加方便。

標題:golang 每日一庫之 iancoleman/orderedmap
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/02/24/1740358069353.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/JYtfJoxS3Qls3qPEMb-Maw