<-go语言中的运算符是什么?在许多与 Go 相关的代码片段中都看到了这一点,但它的含义是什么?
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
你已经有了答案,但这里是。
将通道视为消息队列。
如果通道在左箭头 (<-) 运算符的右侧,则表示将条目出列。将条目保存在变量中是可选的
e <- q
如果通道在左箭头运算符的左侧,则表示将条目入队。
q <- e
关于“出队”(接收)而不存储在变量中的进一步说明:它可以在非缓冲队列上使用,以在 Java 中实现类似“等待/通知”的操作:一个协程被阻塞,等待出队/接收信号,然后另一个协程排队/发送该信号,其内容不重要。(或者,发送方可能会被阻止,直到接收方提取消息)
UYOU
TA贡献1878条经验 获得超4个赞
<- 在语言规范中不止一处使用:
渠道类型:
的<-操作者指定的信道的方向,发送或接收。如果没有给出方向,则通道是双向的。通道可能被限制为只能发送或只能通过转换或分配接收。
接收运算符:
对于ch通道类型的操作数,接收操作<-ch的值是从通道接收的值ch。值的类型是通道的元素类型。表达式阻塞,直到值可用。从 nil 通道接收永远阻塞。从关闭的通道接收总是成功,立即返回元素类型的零值。
发送语句:
send 语句在通道上发送一个值。通道表达式必须是通道类型并且值的类型必须可分配给通道的元素类型。
SendStmt = Channel "<-" Expression .
Channel = Expression .
接收操作符也是select 语句的基本部分
- 3 回答
- 0 关注
- 214 浏览
添加回答
举报
0/150
提交
取消