diff --git a/channels/channels.go b/channels/channels.go index 0165993..07cc185 100644 --- a/channels/channels.go +++ b/channels/channels.go @@ -40,7 +40,25 @@ func bufferedChannels() { fmt.Println("Done") } +func ping(pingc chan<- string, msg string) { + pingc <- msg +} + +func pong(pingc <-chan string, pongc chan<- string) { + fmt.Println("pong() received message:", <-pingc) + pongc <- "pong!" +} + +func pingPong() { + header("Channel Directions") + pingc, pongc := make(chan string, 1), make(chan string, 1) + ping(pingc, "ping!") + pong(pingc, pongc) + fmt.Println("Received message in pingPong():", <-pongc) +} + func Channels() { simpleChannels() bufferedChannels() + pingPong() }