Golang新手可能会踩的50个坑-01左大括号{一般不能单独放一行
在其他的编程语言中,左大括号{的位置程序员可以自行决定。
Go比较特别,遵守分号注入规则(automatic semicolon injection):
编译器会在每行代码尾部特定分隔符后加分号(;)来分隔多条语句,比如会在 ) 后加分号。
// 错误示例
func main()
{
println("hello world")
}
// 等效于
func main(); // 无函数体
{
println("hello world")
}
# 错误输出:
# command-line-arguments
./test.go:3:6: missing function body
./test.go:4:1: syntax error: unexpected semicolon or newline before {
- 正确示例
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
- 注意代码块等特殊情况:
package main
import "fmt"
// { 并不遵守分号注入规则,不会在其后边自动加分号(;),此时可换行。
func main() {
{
fmt.Println("hello world")
}
}