diff --git a/goroutine/select.go b/goroutine/select.go new file mode 100644 index 0000000..4377a97 --- /dev/null +++ b/goroutine/select.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" +) + +func main() { + ch1 := make(chan int) + ch2 := make(chan int) + for i := 0; i < 5; i++ { + if i % 2 == 0 { + go func(i int) { + ch1 <- i + }(i) + } else { + go func(i int) { + ch2 <- i + }(i) + } + } + + cnt := 0 + df := 0 + for cnt < 5 { + select { + case <- ch1: + fmt.Printf("ch1 received\n") + cnt++ + case v := <- ch2: + fmt.Printf("ch2: %d\n", v) + cnt++ + default: + df++ + } + } + fmt.Printf("default: %d\n", df) +}