2015-07-10 100 views
2

我想说,我只是开始学习和使用Go语言,而且这不是一个语法问题,而是更多语言问题设计问题。为什么分配给Go中的变量有一个等号

在围棋,假设你有cint通道,可以使用信道发送:

c <- 1 

,并且从通道接收到一个变量v有:

v = <- c 

我读过一个简单的方法来记住语法,即“箭头”指向信息流动的方向,我认为这是诗意的,尤其是Python粉丝。我的问题是为什么这不是所有的方式,所以你有对称的语法:

v <- c 

为了从渠道接收?为什么有等号?

我想解释最终会与邻近的语法标记,如:

[variable][value] 

它可以想见,来自如下语句:

v 1 

这样等号存在,可以重复使用通常的变量赋值机制是通过将该通道接收评估为一个值。难道让翻译接受没有等号的版本是困难的吗?基本上只需要将它视为该情况下的二元运算符。

这似乎也导致这样一种情况,如果有两个通道c1等案件c2你的语法:

c2 <- <- c1 

为了从一个读取并传送到另一个。


我想也说,我并不想引起款式的意见,而是试图了解决定开车去当事情是这样的。

回答

2

组合两个正交算子,每个做一件事情更具表现力。

除了通过@塞达特-kapanoglu提供的例子,相信你会如何表达如下:

x := <-ch 
x += <-ch 
x, y = <-ch1, <-ch2 
你的建议

而且下面的表达式:

y <- x 

可以读从频道x或写入频道y,具体取决于类型xy。它比较到使用现有语法的代码:

y = <-x 
y <- x 
+0

我试图表明,表达回答'y < - x'是从信道读'y'到通道'x'如果'y'也一个类似的渠道。但是我听到你......语法不再具有表现力,你必须阅读整个代码才能解释它。 – jeteon

相关问题