package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string, 10)
go gen(ch, 0)
go gen(ch, 100)
go func() {
for {
v := <-ch
fmt.Println(v)
}
}()
time.Sleep(10 * time.Second)
}
func gen(ch chan string, start int) {
for i := 0 + start; i < 10+start; i++ {
select {
case ch <- fmt.Sprintf("%d", i):
default:
fmt.Println("...")
}
}
}
# result1:
go run main.go
...
...
...
...
...
...
0
1
2
3
4
5
6
7
8
9
100
...
108
109
#result2:
go run main.go
0
1
2
3
4
5
6
7
8
9
100
101
102
103
104
105
106
107
...
109