Golang新手可能会踩的50个坑-01左大括号{一般不能单独放一行

in #cn6 years ago

在其他的编程语言中,左大括号{的位置程序员可以自行决定。
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")
    }
}

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63050.55
ETH 2622.66
USDT 1.00
SBD 2.71