在Golang中使用分号是可以的吗?
在Golang中使用分号是可以的吗? 我注意到在Go语言中可以使用分号。
package main
import (
"fmt"
); //这里
func main() {
a := 4;//这里
b := 4;//这里
fmt.Println("The sum is: ", a+b);//这里
}
即使我知道不需要分号,但我还是想使用它们,因为我在JavaScript中习惯了使用分号,而且我喜欢这种风格。这样做可以吗?会不会有什么不同或者是个坏主意?
使用分号连接两个相关的独立子句,以替代逗号和并列连词。不应在从属子句和独立子句之间使用分号。
更多关于在Golang中使用分号是可以的吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
《Effective Go》对何时应该/不应该使用分号有很好的解释,并附有示例:Effective Go - The Go Programming Language。
按照惯例,所有Go代码都应通过gofmt进行格式化。这样,开发者的大脑就能从风格讨论中解放出来,专注于重要的事情。
编辑补充:正如一条Go谚语所说,
Gofmt的风格不是任何人的最爱,但gofmt却是每个人的最爱
illud: 我知道我不需要它们,但我用它们可以吗?我只是因为在 JavaScript 中使用它们并且我喜欢它们。这会有任何不同或是个坏主意吗?
正如其他人所说,go fmt 无论如何都会去掉它们。如果你喜欢它们,那很好,但当与他人合作时,尝试编写符合语言习惯的代码很重要,就像你在英语中可以构造各种人们可能理解的“奇怪”句子一样。他们可能理解你,但这听起来会很奇怪,并且会影响他们对你的看法。
如果你是一个超过一人项目的贡献者,那么遵循标准也很重要,这样其他人才能快速接手代码并理解它。当然,这就是我们使用自动格式化工具的原因,这样我们就不必在像分号这样实际上并不影响程序的事情上花费宝贵的时间。
在Go语言中,分号是允许的,但通常不推荐使用。Go的词法分析器会自动在行末插入分号,所以显式添加分号不会改变程序行为,但会与Go社区的编码风格相悖。
你的代码示例在语法上是正确的:
package main
import (
"fmt"
); // 分号可以加在这里
func main() {
a := 4; // 分号可以加在这里
b := 4; // 分号可以加在这里
fmt.Println("The sum is: ", a+b); // 分号可以加在这里
}
这段代码与不加分号的版本在功能上完全一致。Go规范中明确说明分号可以作为语句终止符,但大多数情况下由词法分析器自动处理。
然而,在某些特定位置必须使用分号:
// 多个语句写在同一行时需要分号
func example() {
a := 1; b := 2; fmt.Println(a + b)
}
// for循环的初始化、条件和后置部分需要分号分隔
for i := 0; i < 10; i++ {
// 循环体
}
Go的gofmt工具会自动移除不必要的分号。如果你运行gofmt格式化你的代码,所有非必需的分号都会被删除。
虽然技术上允许,但在Go社区中显式添加分号被视为非惯用写法。大多数Go项目都遵循gofmt的格式化约定,这有助于保持代码风格的一致性。

