square.go 655 B

1234567891011121314151617181920212223242526272829303132333435
  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. }
  11. }).Map(func(item interface{}) interface{} {
  12. i := item.(int)
  13. return i * i
  14. }).Filter(func(item interface{}) bool {
  15. i := item.(int)
  16. return i%2 == 0
  17. }).Distinct(func(item interface{}) interface{} {
  18. return item
  19. }).Reduce(func(pipe <-chan interface{}) (interface{}, error) {
  20. var result int
  21. for item := range pipe {
  22. i := item.(int)
  23. result += i
  24. }
  25. return result, nil
  26. })
  27. if err != nil {
  28. fmt.Println(err)
  29. } else {
  30. fmt.Println(result)
  31. }
  32. }