为什么我在这里需要分号?

时间:2009-11-12 05:03:06

标签: go

这是一个测试Go程序:

package main
import fmt "fmt"
func main () {
    ex := "moo cow\n";
    fmt.Print (ex)
}

用分号编译。但是,如果删除分号,则不会:

string.go:5: syntax error near fmt

有什么想法吗?


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

2 个答案:

答案 0 :(得分:11)

来自The Go Programming Language Specification

  

语句列表的元素是   用分号隔开,可能是   只有前一个省略   语句:

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

答案 1 :(得分:1)

嗯,答案在技术上是这里的:http://golang.org/doc/effective_go.html#semicolons,但不是很清楚。看起来您可以在语句结尾处留下分号,但不能使用表达式。我认为(我不确定这里)表达式是否包含“=”(或“:=”)(尽管+ =在教程中似乎没问题?)