😽
Go言語でmapからindexとkeyとvalueを同時に取り出す
プログラム
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
Discussion