diff --git a/main.go b/main.go index e7ea27b..40861eb 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,8 @@ package main // import "git.sangeeth.dev/gobyexample/goroutines" // import "git.sangeeth.dev/gobyexample/channels" // import "git.sangeeth.dev/gobyexample/cselect" -import "git.sangeeth.dev/gobyexample/timeouts" +// import "git.sangeeth.dev/gobyexample/timeouts" +import "git.sangeeth.dev/gobyexample/selectdefault" func main() { // runes.Runes() @@ -17,5 +18,6 @@ func main() { // goroutines.Goroutines() // channels.Channels() // cselect.Select() - timeouts.Timeouts() + // timeouts.Timeouts() + selectdefault.SelectDefault() } diff --git a/selectdefault/selectdefault.go b/selectdefault/selectdefault.go new file mode 100644 index 0000000..4ca2d11 --- /dev/null +++ b/selectdefault/selectdefault.go @@ -0,0 +1,31 @@ +package selectdefault + +import "fmt" + +func SelectDefault() { + msgs := make(chan string) + signals := make(chan string) + + select { + case val := <-msgs: + fmt.Println("Received", val) + default: + fmt.Println("`default` can be used to prevent blocking when there's nothing to receive from a channel") + } + + select { + case msgs <- "hello": + fmt.Println("Sent hello") + default: + fmt.Println("`default` can be used to prevent blocking when we send something to an unbuffered channel but there's nobody to receive") + } + + select { + case val := <-msgs: + fmt.Println("Received something from msgs", val) + case val := <-signals: + fmt.Println("Received something from signals", val) + default: + fmt.Println("`default` can be used to prevent blocking when there's nothing to receive or if its not possible to send across multiple channels") + } +}