首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go程序例子(32):通道方向

Go程序例子(32):通道方向

原创
作者头像
用户11078756
发布2024-12-17 17:09:19
发布2024-12-17 17:09:19
1200
举报
文章被收录于专栏:go程序例子go程序例子

在将通道作为函数参数时,可以指定通道是仅用于发送值还是接收值。这种具体性增加了程序的类型安全性。

代码语言:go
复制
package main

import "fmt"
// 这个 ping 函数只接受用于发送值的通道。如果尝试在该通道上接收值,将会导致编译时错误。
func ping(pings chan<- string, msg string) {
    pings <- msg
}
// pong 函数接受一个用于接收(ping)的通道和一个用于发送(pong)的通道。
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)
}

运行结果:

代码语言:javascript
复制
$ go run channel-directions.go
passed message

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档