【问题标题】:Why do I need a semicolon here?为什么这里需要分号?
【发布时间】:2010-12-15 18:06:43
【问题描述】:

这是一个测试 Go 程序:

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

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

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

有什么想法吗?


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

【问题讨论】:

    标签: go


    【解决方案1】:

    来自The Go Programming Language Specification

    语句列表的元素是 用分号隔开,可以是 仅当前一个时省略 声明:

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

    【讨论】:

    • 是的,似乎是它如何解析文本的问题。无论如何,我可能最终会自己输入所有分号。除非不允许。没用过就知道了。
    【解决方案2】:

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

    【讨论】:

    • 读完之后,听起来你就像在 Pascal 中那样使用它们来分隔语句。在块之外,您不需要它们。
    • 很好的答案 +1。我在这里引用了你stackoverflow.com/a/64381507/12817546
    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2021-08-27
    • 2017-09-08
    • 2019-01-16
    • 2021-10-22
    相关资源
    最近更新 更多