😽

Go言語でmapからindexとkeyとvalueを同時に取り出す

2023/02/16に公開

プログラム

package main

import (
        "fmt"
)

func yield[T comparable, V any](m map[T]V, fn func(idx int, key T, value V) error) error {
        idx := 0
        for key, value := range m {
                err := fn(idx, key, value)
                if err != nil {
                        return err
                }
                idx++
        }

        return nil
}

func main() {
        m := map[int]string{1: "foo", 2: "bar", 3: "baz"}

        if err := yield(m, func(idx int, key int, value string) error {
                fmt.Println(idx, key, value)
                return nil
        }); err != nil {
                panic(err)
        }
}

実行結果

$ go run main.go
0 1 foo
1 2 bar
2 3 baz
GitHubで編集を提案

Discussion