京东云服务器推荐配置、多种配置选择,满足不同业务需求!

热门推荐

⭐ 稳定入门选择

配置:2核2G/5M

适用场景:个人站点 / 轻量应用

特点:性价比高,稳定可靠

¥19/月
立即购买
流量友好

☁️ 轻量云主机

配置:2核4G 5M

适用场景:小型业务 / 博客 / 测试环境

特点:流量友好,性能均衡

¥149/年
立即购买
高性能

💻 云服务主机

配置:4核16G 8M

适用场景:中小型服务 / 多并发场景

特点:充足内存与带宽,性能强劲

¥750/年
立即购买
新人专享

🎁 新人福利

新人访问 → 点击 → 最新活动

可获取 3000元 礼券

立即领取
服务端 / Golang 教程 / Golang 并发
Go 语言单向通道
Go 语言 Error(错误处理)Go 语言通道(Channel)

Go 语言单向通道

众所周知,通道是并发运行的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 <- "nhooo"
} 
  
func main() { 
  
    //创建双向通道
    mychanl := make(chan string) 
  
        //在这里,sending()函数将双向通道转换为仅发送通道 
    go sending(mychanl) 
  
    //在这里,通道只在goroutine内部发送,而在goroutine之外,通道是双向的,所以它打印nhooo 
    fmt.Println(<-mychanl) 
}

输出:

nhooo

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

Go 语言 Error(错误处理)Go 语言通道(Channel)
下一篇:无