Slide 8
Slide 8 text
4. 2値のyield!
● yield func(K, V) bool
● K, Vともにどんな型でもOK
○ mapのようなcomparable制約はない
● 値とerrorをyieldに渡す
○ for文側で値とerrorを受け取れる
● Goとしてよく見る形
● 実装もシンプル
○ ただしKey-Valueを返すときはKをstructに……
func Three(yield func(int, error) bool) {
if !yield(1, nil) {
return
}
err := fmt.Errorf("Error!")
yield(0, err)
}
func main() {
for n, err := range Three {
if err != nil {
fmt.Println(err)
break
}
fmt.Println(n)
}
}
https://go.dev/play/p/0VNRQSv7ELe