いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-210 (golang.org/x/exp/maps)(Go 1.18 リリース時には含まれなかった汎用マップ処理)

概要

忘れないうちにメモメモ。。。便利ですね。そのうち標準ライブラリに含まれるのを希望。

pkg.go.dev

サンプル

package exp_maps

import (
    "github.com/devlights/gomy/output"
    "golang.org/x/exp/maps"
)

// ExpMaps -- Go 1.18 リリース時には含まれなかったジェネリクス対応 汎用map処理が定義されている golang.org/x/exp/maps パッケージのサンプルです。
//
// REFERENCES
//   - https://pkg.go.dev/golang.org/x/exp/maps
func ExpMaps() error {
    var (
        m1 = map[string]int{"hello": 100, "world": 101}
        m2 = map[string]int{"world": 101, "hello": 100}
        k  []string
        v  []int
    )

    k = maps.Keys(m1)
    v = maps.Values(m1)

    output.Stdoutl("[maps.Keys]", k, v)
    output.Stdoutl("[maps.Values]", maps.Equal(m1, m2))

    maps.Clear(m1)
    output.Stdoutl("[maps.Clear]", m1, m2)

    return nil
}

実行すると以下のような感じです。

gitpod /workspace/try-golang (master) $ task
task: [run] go run . -onetime

ENTER EXAMPLE NAME: exp_maps

[Name] "generics_exp_maps"
[maps.Keys]          [hello world] [100 101]
[maps.Values]        true
[maps.Clear]         map[] map[hello:100 world:101]


[Elapsed] 48.84µs

過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。