arekkusu6

Filter function that returns an iterator in go

Mar 20th, 2026 (edited)
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.47 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "iter"
  6.     "slices"
  7. )
  8.  
  9.  
  10. func Filter[T any](s []T, f func(T) bool) iter.Seq[T] {
  11.     return func(yield func(T) bool) {
  12.         for _, v := range s {
  13.             if f(v) {
  14.                 if !yield(v) {
  15.                     return
  16.                 }
  17.             }
  18.         }
  19.     }
  20. }
  21.  
  22.  
  23. func main() {
  24.     var s = []string{"a", "bc", "d", "ef"}
  25.  
  26.     s = slices.Collect(Filter(s, func(s string) bool { return len(s) > 1 }))
  27.  
  28.     fmt.Println(s)
  29. }
Advertisement
Add Comment
Please, Sign In to add comment