gpt4 book ai didi

go - chanA <-chanB : send and receive value or send channel itself?

转载 作者:行者123 更新时间:2023-12-01 22:08:54 27 4
gpt4 key购买 nike

根据以下示例中的类型,Go编译器似乎将执行两个完全不同的语义操作:

chanA <-chanB

如果chanA是类型(chan chan <-字符串),则此操作会将本身类型chanB的类型(chan <-字符串)发送给chanA。

但是,如果chanA是类型(chan <-字符串),它将尝试从chanB中提取一个字符串,这意味着chanB的类型是(<-chan字符串)。

是唯一了解这种类型的方法,还是有一种简单的方法来判断 channel 何时发送值与自身之间的关系?

我正在从Go Programming Book看这个示例:https://github.com/adonovan/gopl.io/blob/master/ch8/chat/chat.go

最佳答案

这很容易分辨。

chanA <- anything

无论 anything是什么,都会在 chanA上发送值 anything
chanA <- <- chanB

正在从 chanB接收值并将其发送到 chanA

您在这里的第二条语句:

However, if chanA is type (chan<- string), it will try to extract a string from chanB



是你的问题。 foo <- bar始终是发送操作。 Go编译器从左到右读取, identifier <-是发送操作。

接收操作是一个计算结果为值的表达式,因此它仅在值有效的情况下才有效-即编译器必须已经遇到赋值操作,发送操作,函数调用等的第一部分。

关于go - chanA <-chanB : send and receive value or send channel itself?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58455250/

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