如果/for/func块的大括号位置需要在同一行上,则为go



for、func或if语句后面的go是否必须在同一行上有大括号?如果我把它向下移动,我会得到一个编译错误,但我看不到语言规范中显示的块必须是这样的结构。

块是匹配中的一系列声明和语句支架。

Block="{"{Statement";"}"}"。

IfStmt="if"[SimpleStmt";"]表达式块["else"(IfStmt|块)]。

由于分号推理:

一个警告
永远不要将控件结构的左大括号(if、for、switch或select)放在下一行
如果这样做,将在大括号之前插入分号,这可能会造成不必要的影响。这样写:

if i < f() {
    g()
}

不是这样的:

if i < f()  // wrong!
{           // wrong!
    g()
}

作为jnml注释,语言语法对于块是正确的
但是结合和半结肠注射,这意味着你真的应该:

  • 始终将大括号放在与if语句相同的行上(否则"if"将无法执行您认为应该执行的操作)
  • 实际上,总是使用gofmt,不要去想它(最好是,每次将代码保存在编辑器中时都对其进行gofmt。它很快,会使您的代码与任何Go代码的其余部分保持一致)

甚至Go编译器也会强制执行"同一行括号"规则,以避免任何意外的副作用
因此,语言引用没有说明大括号放在哪里,但gofmt和编译器都会确保它被正确放置在if语句中。

最新更新