Package ita provides adaptors for iter.Seq and iter.Seq2.
go get github.com/shu-go/ita
na := myList{
s: []string{"rei", "ichi", "ni", "san", "shi", "go"},
}
// myList has methods Num() and Item(int), and has no methods that return []string or iter.Seq[string].
for e := range ita.NumAt(na.Num, na.Item) {
fmt.Println(e)
}
// Output:
// rei
// ichi
// ni
// san
// shi
// go
kv := myMap{
m: map[string]int{"rei": 0, "ichi": 1, "ni": 2, "san": 3, "shi": 4, "go": 5},
}
// myMap has methods KeysSorted() and ValueOf(string), and has no methods that return iter.Seq2[string, int].
for k, v := range ita.KeysValues(kv.KeysSorted, kv.ValueOf) {
fmt.Println(k, v)
}
// Output:
// go 5
// ichi 1
// ni 2
// rei 0
// san 3
// shi 4
ita.Chain[string](slices.Values([]string{"rei", "ichi", "ni", "san", "shi", "go"})).
Pipe(strings.ToUpper).
Filter(func(s string) bool { return len(s) <= 2 }).
Exec(func(s string) { fmt.Println(s) })
// Output:
// NI
// GO