Goroutine
- go func(x)
channels
- declare:
- var chan_name chan chan_type
- chan_name := make(chan chan_type)
- send and receive data
channel <- data //write
data := <- channel //read
- buffered channels:
ch := make(chan int, 100)
- unidirectional channel
sendch := make(chan<- int)
- closing channels in range loop
v, ok := <-ch //ok is false if no more data received
for i := range c{
//stop when closed
}
- select:
- blocked until one of the channels is ready
- forever not ready, deadlock
- if multiple are ready, randomly choose
- non-blocking:
default
select{
case :
//default :
}
-
deadlock