Go 为什么这里需要分号?

Go 为什么这里需要分号?,go,Go,以下是一个试运行程序: package main import fmt "fmt" func main () { ex := "moo cow\n"; fmt.Print (ex) } 它使用分号进行编译。但是,如果删除分号,则不会: string.go:5: syntax error near fmt string.go:5:fmt附近的语法错误 有什么想法吗 更新(2012年3月):较新的Go版本能够编译这两种表单(带分号和不带分号)。从技术上讲,答案在这里:,但不是很清

以下是一个试运行程序:

package main
import fmt "fmt"
func main () {
    ex := "moo cow\n";
    fmt.Print (ex)
}
它使用分号进行编译。但是,如果删除分号,则不会:

string.go:5: syntax error near fmt string.go:5:fmt附近的语法错误 有什么想法吗



更新(2012年3月):较新的Go版本能够编译这两种表单(带分号和不带分号)。

从技术上讲,答案在这里:,但不是很清楚。看起来您可以在语句的末尾保留分号,但不能在表达式的末尾保留分号。我认为(这里我不确定)表达式中是否有“=”(或“:”)的东西(尽管在教程中+=似乎很好?

来自:

语句列表的元素是 用分号分隔,分号可以是 仅当前面的 声明:

  • 以声明列表的右括号“)”结尾;或
  • 以不属于表达式一部分的右大括号“}”结尾

读过这些之后,听起来像是用它们在块中分隔语句,就像用Pascal一样。在街区之外,你不需要它们。很好的答案+1。我在这里引用了你的话。是的,似乎是关于它如何解析文本的问题。不管怎样,我可能会自己放上所有的分号。除非这是不允许的。我还没有充分利用它来了解。