10

这是一个测试 Go 程序:

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

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

string.go:5: fmt 附近的语法错误

有任何想法吗?


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

4

2 回答 2

13

来自Go 编程语言规范

语句列表的元素用分号分隔,只有在前一条语句时才可以省略:

  • 以声明列表的右括号“)”结尾;或者
  • 以不属于表达式的右大括号“}”结尾。
于 2009-11-12T05:12:49.233 回答
1

好吧,从技术上讲,答案就在这里: http: //golang.org/doc/effective_go.html#semicolons,但不是很清楚。看起来你可以在语句的末尾留下分号,但不是表达式。我认为(我在这里不确定)表达式是任何带有“=”(或“:=”)的东西(尽管 += 在本教程中似乎很好?)

于 2009-11-12T05:10:01.997 回答