在Go中,如何编写多行语句?

在Go中,如何编写多行语句?,go,Go,在python中,我们使用反斜杠表示当前语句继续到下一行 比如说, a = b + c + s \ + x + y 或者简单地说 a = b + c + s + x + y 用围棋语言能做到这一点吗?谢谢当然可以,只需在末尾添加一个运算符,例如: a = b + c + s + x + y 还要注意的是,在操作员之前不可能断开线路。以下代码无效: a = b + c + s + x + y 有趣的是,Go语言规范本身要求在每条语句的末尾使用分号,但是lex

在python中,我们使用反斜杠表示当前语句继续到下一行

比如说,

a = b + c + s \
    + x + y
或者简单地说

a = b + c + s +
    x + y

用围棋语言能做到这一点吗?谢谢

当然可以,只需在末尾添加一个运算符,例如:

a = b + c + s +
    x + y
还要注意的是,在操作员之前不可能断开线路。以下代码无效:

a = b + c + s
    + x + y

有趣的是,Go语言规范本身要求在每条语句的末尾使用分号,但是lexer会在行的末尾插入隐式分号,这些行看起来像是编译之前的语句

因此,为了防止在未完成的行末尾出现不需要的分号,您需要做的就是确保该行不会以可能使其看起来像一个完整语句的内容结尾

换句话说,避免在变量、常量、函数、关键字或后缀运算符中结束不完整的行(例如
++


剩下什么?嗯,我想到了一些东西——中缀运算符(例如,
=
+
)、逗号、或开头括号、大括号或括号。

不,我们没有。我们使用括号。此外,我们将其操作数分布在第一行的末尾,而不是第二行的开头。请看挑剔:这不是一个有效的python表达式-您缺少了一个运算符。哈哈,显然,我对python也很在行。谢谢你指出这一点。我会解决的。但是,
gofmt-w
会把你的行分开吗?介意把无效的加粗吗?@Elazar:是的,正如预期的那样,
gofmt
会把行分开。它也适用于多行的函数链接。。。美好的巧合的是,这与Javascript关于分号的策略相同,并且已知会导致意外行为,即使在看似良性的情况下也是如此。如果你想安全的话,没有什么能阻止你自己把它们放在那里。不幸的是,它和JavaScript不完全一样。JavaScript不会在括号表达式中插入一个分号。Go-will,这使得将东西很好地包装起来更加困难。