Cheeel666

Untitled

Aug 1st, 2022
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "math/rand"
  6. "time"
  7. )
  8.  
  9. func asChan(vs ...int) <-chan int {
  10. c := make(chan int)
  11.  
  12. go func() {
  13. for _, v := range vs {
  14. c <- v
  15. time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond)
  16. }
  17.  
  18. close(c)
  19. }()
  20. return c
  21. }
  22.  
  23. func merge(a, b <-chan int) <-chan int {
  24. c := make(chan int)
  25. go func() {
  26. for {
  27. select {
  28. case v, ok := <-a: // Как только все данные будут прочитаны, будут слаться пустые значения
  29. c <- v
  30. fmt.Println(ok)
  31. case v, ok := <-b:
  32. c <- v
  33. fmt.Println(ok)
  34. }
  35. }
  36. }()
  37. return c
  38. }
  39.  
  40. func main() {
  41. a := asChan(1, 3, 5, 7)
  42. b := asChan(2, 4, 6, 8)
  43. c := merge(a, b)
  44.  
  45. for v := range c {
  46. fmt.Println(v)
  47. }
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment