Golang 之 協程 goroutine(四)
阿新 • • 發佈:2018-11-12
通道方向 : 當使用通道作為函式的引數時,可以指定這個通道是不是隻用來發送或者接收值。這個特性提升了程式的型別安全性。
func ping(pings chan<- string, msg string) {
pings <- msg
// 若嘗試執行如下語句,傳送通道資料,將會報錯
// invalid operation: <-pings (receive from send-only type chan<- string)
// fmt.Println( <- pings)
}
當在區域性環境內,通道作為引數指明瞭方向,那麼就應該按方向要求,操作通道
package main
import "fmt"
// `ping` 函式定義了一個只允許傳送資料的通道。嘗試使用這個通
// 道來接收資料將會得到一個編譯時錯誤。
func ping(pings chan<- string, msg string) {
pings <- msg
}
func pong(pongs <-chan string) {
fmt.Println(<- pongs)
}
func main() {
pings := make(chan string, 1)
ping(pings, "passed message" )
pong(pings)
}