Introduction
This lab aims to test your understanding of using channels as function parameters in Golang.
This tutorial is from open-source community. Access the source code
This lab aims to test your understanding of using channels as function parameters in Golang.
The problem to be solved in this lab is to modify the given code to ensure that the channels used as function parameters are specified to only send or receive values.
$ go run channel-directions.go
passed message
There is the full code below:
// When using channels as function parameters, you can
// specify if a channel is meant to only send or receive
// values. This specificity increases the type-safety of
// the program.
package main
import "fmt"
// This `ping` function only accepts a channel for sending
// values. It would be a compile-time error to try to
// receive on this channel.
func ping(pings chan<- string, msg string) {
pings <- msg
}
// The `pong` function accepts one channel for receives
// (`pings`) and a second for sends (`pongs`).
func pong(pings <-chan string, pongs chan<- string) {
msg := <-pings
pongs <- msg
}
func main() {
pings := make(chan string, 1)
pongs := make(chan string, 1)
ping(pings, "passed message")
pong(pings, pongs)
fmt.Println(<-pongs)
}
In this lab, you learned how to specify if a channel is meant to only send or receive values, which increases the type-safety of the program.