gpt4 book ai didi

go - 直接从一个 channel 发送到另一个 channel

转载 作者:IT王子 更新时间:2023-10-29 01:18:27 26 4
gpt4 key购买 nike

当从一个 channel 直接发送到另一个 channel 时,我偶然发现了我发现的令人惊讶的行为:

package main

import (
"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)
}

Go Playground

我预计 <- my_chan发送"Hello"输入 string .但是,它发送类型 chan string我的代码运行良好。这意味着发送的内容(stringchan string)取决于接收方的类型。

我尝试了天真的谷歌搜索,但由于我不熟悉正确的术语,所以我一无所获。是否有与上述行为相关的适当术语?当然,任何额外的见解都很棒。

最佳答案

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

考虑这一行:

chan_of_chans <- my_chan

你实际上在做的是插入 my_chan进入 channel ,而不是从 my_chan 中删除某些内容并将其插入 chan_of_chans .

如果你想从my_chan中提取一些东西并将其发送到另一个 channel ,您需要使用 <- 提取它 channel 前没有空格的运算符:

value := <-my_chan
other_chan <- value

或者,这应该有效:

other_chan <- (<-my_chan)

关于go - 直接从一个 channel 发送到另一个 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35966277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com