2016-07-22 73 views
1

gofmt命令不會格式化花括號({})。GoLang gofmt命令

代碼:

package main 

import "fmt" 

func main() 
{ 
    fmt.Printf("Hello, world\n") 
} 

gofmt hello.go的輸出

hello.go:6:1:預期聲明,實測 '{' 退出狀態2

如果我把它可以在任何地方正確格式化。 gofmt是否不格式化大括號?

+2

請注意,在進入大括號應使用內聯函數聲明! –

回答

6

你必須把大括號在同一行的函數聲明的,否則你的代碼不會因爲這個語法錯誤

爲什麼有括號,但沒有分號的編譯?爲什麼我不能把大括號放在下一行?

Go使用括號括起來作爲語句分組,012h曾使用過C語言中任何語言的程序員熟悉的語法。 然而,分號用於解析器,不適用於人,我們希望 儘可能地消除它們。爲了實現這個目標,Go借用了BCPL的一個 技巧:分隔語句的分號在 形式語法中,但是在沒有前瞻的情況下被自動注入, 在任何可能是語句結束的行末尾的詞法分析器。 這在實踐中效果很好,但具有強制 支架樣式的效果。例如,函數的大括號不能單獨出現在一行上。

https://golang.org/doc/faq#semicolons

3

你的代碼有語法錯誤:把花括號與函數聲明的同一行。
的程序片段必須是語法上有效的使用gofmt:

見:https://golang.org/cmd/gofmt/它說:

當gofmt從標準輸入讀取時,可接收一個完整的圍棋 程序或程序片段。 程序片段必須是 語法上有效的聲明列表,語句列表或表達式。 格式化這樣一個片段時,gofmt保留前導縮進 以及前導和尾隨空格,因此Go程序的各個部分可以通過將它們通過gofmt管道化來格式化。

0

把花括號與函數聲明的同一行 也許你應該添加gofmt到你的編輯器,這樣可避免代碼格式的問題