Golang 教程
Golang 控制语句
Golang 函数 & 方法
Golang 切片 & 数组
Golang 结构体
Golang 字符串
Golang 接口
Golang 指针
Golang 并发
Golang 异常(Error)
Golang 其他杂项

Go 语言单向通道

时间:2023年06月10日 阅读:232
以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关!
淘客轩-衣食住行外卖生活好助手

众所周知,通道是并发运行的goroutine之间的通信媒介,因此它们可以相互发送和接收数据。默认情况下,通道是双向的,但是您也可以创建单向通道。只能接收数据的通道或只能发送数据的通道,就是单向通道。单向通道也可以通过make()函数创建,如下所示:

//仅接收数据
c1:= make(<- chan bool)

//仅用于发送数据
c2:= make(chan<-bool)

单向通道使用示例1:

package main 
  
import "fmt"
  
func main() { 
  
    //仅用于接收数据
    mychanl1 := make(<-chan string) 
  
    //仅用于发送数据
    mychanl2 := make(chan<- string) 
  
    //显示通道的类型 
    fmt.Printf("%T", mychanl1) 
    fmt.Printf("\n%T", mychanl2) 
}

输出:

<-chan string
chan<- string

将双向通道转换为单向通道

在Go语言中,允许将双向通道转换为单向通道,换句话说,您可以将双向通道转换为仅接收或仅发送通道,但反之亦然。如下面的程序所示:

package main 
  
import "fmt"
  
func sending(s chan<- string) { 
    s <- "momojc"
} 
  
func main() { 
  
    //创建双向通道
    mychanl := make(chan string) 
  
        //在这里,sending()函数将双向通道转换为仅发送通道 
    go sending(mychanl) 
  
    //在这里,通道只在goroutine内部发送,而在goroutine之外,通道是双向的,所以它打印momojc 
    fmt.Println(<-mychanl) 
}

输出:

momojc

单向通道的使用:单向通道用于提供程序的类型安全性,从而使程序产生的错误更少。或者,当您要创建只能发送或接收数据的通道时,也可以使用单向通道。

打赏

本文地址:https://www.momojc.cn/golang/go-unidirectional-channel.html

关于本站 | 隐私政策 | 免责声明 | 广告合作 | 我要投稿 | 后台管理

CopyRight © 2023-2024 MOMO教程 WWW.MOMOJC.CN , All Rights Reserved.

站长E-mail:378074730@qq.com 网站已运行:  运行时长:0.044 秒

京ICP备20029690号-1京ICP备20029690号-2 京公网安备11011402013892号京公网安备11011402013892号 中国互联网违法和不良信息举报中心 网络违法犯罪举报网站

本网站托管于 腾讯云 .由网站卫士提供网站加速和攻击防御服务 提供CDN加速/防御服务.由zblogcn强力驱动 又拍云提供CDN加速/云存储服务 51la网站统计