square.go 670 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/tal-tech/go-zero/core/fx"
  5. )
  6. func main() {
  7. result, err := fx.From(func(source chan<- interface{}) {
  8. for i := 0; i < 10; i++ {
  9. source <- i
  10. source <- i
  11. }
  12. }).Map(func(item interface{}) interface{} {
  13. i := item.(int)
  14. return i * i
  15. }).Filter(func(item interface{}) bool {
  16. i := item.(int)
  17. return i%2 == 0
  18. }).Distinct(func(item interface{}) interface{} {
  19. return item
  20. }).Reduce(func(pipe <-chan interface{}) (interface{}, error) {
  21. var result int
  22. for item := range pipe {
  23. i := item.(int)
  24. result += i
  25. }
  26. return result, nil
  27. })
  28. if err != nil {
  29. fmt.Println(err)
  30. } else {
  31. fmt.Println(result)
  32. }
  33. }