select {
case <- ch1:
// do something if read from ch1
case x := <-ch2:
// do something if read from ch2, and assign value to x
case ch3 <- y:
// do something if can write to ch3
default:
// do something if none of the above happens
}
package main
import (
"fmt"
"time"
)
func worker(done chan<-struct{}){
time.Sleep(5 * time.Second)
done <- struct{}{}
}
func main(){
done := make(chan struct{})
tick := time.NewTicker(1 * time.Second)
go worker(done)
for {
select {
case <- tick.C:
fmt.Printf(".")
case <- done:
fmt.Printf("\nwork done.\n")
return
}
}
}