为了账号安全,请及时绑定邮箱和手机立即绑定

直接从一个频道发送到另一个频道

直接从一个频道发送到另一个频道

Go
慕桂英4014372 2021-12-20 17:07:43
当从一个频道直接发送到另一个频道时,我偶然发现了一些令人惊讶的行为:package mainimport (    "fmt")func main() {    my_chan := make(chan string)    chan_of_chans := make(chan chan string)    go func() {        my_chan <- "Hello"    }()    go func() {        chan_of_chans <- my_chan    }()    fmt.Println(<- <- chan_of_chans)}我希望<- my_chan发送"Hello"type string。但是,它发送类型chan string并且我的代码运行良好。这意味着正在(string或chan string)发送的内容取决于接收者的类型。我尝试过天真的谷歌搜索,但由于我不熟悉正确的术语,我什么也没有想出。是否有与上述行为相关的适当术语?当然,任何额外的见解都很棒。
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

我不是 100% 确定我理解这个问题,但让我们试一试。


考虑这一行:


chan_of_chans <- my_chan

你实际上做的是推my_chan到通道,而不是去除的东西my_chan,将其推入chan_of_chans。


如果要从中提取某些内容my_chan并将其发送到另一个频道,则需要<-在频道之前使用操作符来提取它,而无需空格:


value := <-my_chan

other_chan <- value

或者,这应该有效:


other_chan <- (<-my_chan)


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信