首页 > 编程笔记 > Go语言笔记 阅读:5

Go语言单向通道的用法(附带实例)

单向通道是指只能发送数据或只能接收数据的通道。单向通道实质上是对通道的一种使用限制。

Go 语言中,单向通道的语法格式如下:
var name chan<-type // 只能发送数据的通道
var name <-chan type // 只能接收数据的通道
参数说明如下:
下例演示单向通道的使用方法。

【实例】打印启动汽车的步骤:
代码如下:
package main

import (
    "fmt"
)

// 表示“接通电源”的函数,参数是只能发送数据的通道 chel
func electrify(chel chan<- string) {
    chel <- "接通电源!" // 使用通道发送字符串
    close(chel) // 关闭通道
}

// 表示“启动(发动机)”的函数,参数有两个:
// ch1:只能接收数据的通道
// ch2:只能发送数据的通道
func start(ch1 <-chan string, ch2 chan<- string) {
    data := <-ch1 // 变量 data 接收通道 ch1 传输的数据
    ch2 <- data + "启动!" // 使用通道 ch2 发送数据
    close(ch2) // 关闭通道
}

// 表示“驾驶”的函数,参数是只能发送数据的通道 ch
func drive(ch <-chan string) {
    for data := range ch { // 遍历通道传输的数据
        fmt.Println(data + "准备就绪,开始行万里路...") // 如果遍历的结果是 5
    }
}

func main() {
    ch1 := make(chan string) // 创建通道 ch1
    ch2 := make(chan string) // 创建通道 ch2
    // 执行并发程序
    go electrify(ch1)
    go start(ch1, ch2)
    // 调用表示“驾驶”的函数
    drive(ch2)
}
运行结果如下:

接通电源!启动!准备就绪,开始行万里路....

相关文章