Non-Blocking Channel Operations
package main
import "fmt"
func main() {
// Creating an unbuffered channel 'messages' for string communication
messages := make(chan string)
// Creating an unbuffered channel 'signals' for boolean communication
signals := make(chan bool)
// The first 'select' statement attempts to receive a message from 'messages'
select {
case msg := <-messages:
fmt.Println("received message", msg)
default:
fmt.Println("no message received")
}
// Sending the message "hi" to 'messages'
msg := "hi"
select {
case messages <- msg:
fmt.Println("sent message", msg)
default:
fmt.Println("no message sent")
}
// The third 'select' statement tries to receive a message from 'messages'
// or a signal from 'signals' with a 'default' case for handling no activity
select {
case msg := <-messages:
fmt.Println("received message", msg)
case sig := <-signals:
fmt.Println("received signal", sig)
default:
fmt.Println("no activity")
}
}Last updated