標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

Go で適当な btree を検討していたけど、tidwall/btree がいいかもしれないなぁ

既存のメソッド Scan の仕様が range から呼ばれた関数の要求仕様にちょうどマッチしてた。

package main

import (
    "fmt"

    "github.com/tidwall/btree"
)

func main() {
    var users btree.Map[string, string]

    // add some users
    users.Set("user:4", "Andrea")
    users.Set("user:6", "Andy")
    users.Set("user:2", "Andy")
    users.Set("user:1", "Jane")
    users.Set("user:5", "Janet")
    users.Set("user:3", "Steve")

    // Iterate over the maps and print each user
    for key, value := range users.Scan {
        fmt.Printf("%s %s\n", key, value)
    }
}
$ env GOEXPERIMENT=rangefunc go run main.go
user:1 Jane
user:2 Andy
user:3 Steve
user:4 Andrea
user:5 Janet
user:6 Andy

tidwall さんは、transform というフィルターパッケージの開発者で、よいプロダクトをいろいろ作ってる人なので、もうこれでいいかなぁ感 ( これのSTAR数も前に確認した2022-04-30時点から、680→982 に増えてる )