这一次,我们重新定义智慧互联网

微信号:foreverbestvip

详细了解

每一次尝试都代表着时代的进步

微信号:foreverbestvip

详细了解

这一刻,我们都是世界的佼佼者

微信号:foreverbestvip

详细了解

智慧互联网产品开发的领航者

微信号:foreverbestvip

详细了解

高效的 Go 编程 Effective Go - 分号

免费 - Sunrise - - 浏览量: 0 - 文章来源

和C一样,Go的正式语法使用分号来结束语句,和C不同的是,这些分号并不在源码中出现。 取而代之,词法分析器会使用一条简单的规则来自动插入分号,因此源码中基本就不用分号了。

规则是这样的:若在新行前的最后一个标记为标识符(包括 intfloat64 这类的单词)、数值或字符串常量之类的基本字面或以下标记之一

break continue fallthrough return ++ -- ) }

则词法分析将始终在该标记后面插入分号。这点可以概括为: “如果新行前的标记为语句的末尾,则插入分号”。

分号也可在闭括号之前直接省略,因此像

    go func() { for { dst <- <-src } }()

这样的语句无需分号。通常Go程序只在诸如 for 循环子句这样的地方使用分号, 以此来将初始化器、条件及增量元素分开。如果你在一行中写多个语句,也需要用分号隔开。

警告:无论如何,你都不应将一个控制结构(ifforswitchselect)的左大括号放在下一行。如果这样做,就会在大括号前面插入一个分号,这可能引起不需要的效果。 你应该这样写

if i < f() {
    g()
}

而不是这样写

if i < f()  // 错误!
{           //  错误!
    g()
}

谈谈你的看法

请文明发言!