Golang 之 协程 goroutine(四)

版权声明:本文为博主原创文章,转载文章须附上文章来源与作者。 https://blog.csdn.net/ChangerJJLee/article/details/81272658

通道方向 : 当使用通道作为函数的参数时,可以指定这个通道是不是只用来发送或者接收值。这个特性提升了程序的类型安全性。

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)
}

猜你喜欢

转载自blog.csdn.net/ChangerJJLee/article/details/81272658