http://www.ituring.com.cn/article/39380golang
Go 開發團隊不想要 Go 語言像許多其它語言那樣老是在爲代碼風格而引起無休止的爭論,浪費大量寶貴的開發時間,所以他們製做了一個工具:go fmt
(gofmt
)。這個工具能夠將你的源代碼格式化成符合官方統一標準的風格,屬於語法風格層面上的小型重構。遵循統一的代碼風格是 Go 開發中無可撼動的鐵律,所以你必須在編譯或提交版本管理系統以前使用 gofmt
來格式化你的代碼。函數
儘管這種作法也存在一些爭論,但使用 gofmt
後你再也不須要自成一套代碼風格而是和全部人使用相同的規則。這不只加強了代碼的可讀性,並且在接手外部 Go 項目時,能夠更快地瞭解其代碼的含義。此外,大多數開發工具也都內置了這一功能。工具
Go 對於代碼的縮進層級方面使用 tab 仍是空格並無強制規定,一個 tab 能夠表明 4 個或 8 個空格。在實際開發中,1 個 tab 應該表明 4 個空格,而在自己的例子當中,每一個 tab 表明 8 個空格。至於開發工具方面,通常都是直接使用 tab 而不替換成空格。開發工具
在命令行輸入 gofmt –w program.go
會格式化該源文件的代碼而後將格式化後的代碼覆蓋原始內容(若是不加參數 -w
則只會打印格式化後的結果而不重寫文件);gofmt -w *.go
會格式化並重寫全部 Go 源文件;gofmt map1
會格式化並重寫 map1 目錄及其子目錄下的全部 Go 源文件。spa
gofmt
也能夠經過在參數 -r
後面加入用雙引號括起來的替換規則實現代碼的簡單重構,規則的格式:<原始內容> -> <替換內容>
。命令行
實例:code
gofmt -r 「(a)-> a」–w *.go
上面的代碼會將源文件中沒有意義的括號去掉。開發
gofmt -r 「a[n:len(a)]-> a[n:]」–w *.go
上面的代碼會將源文件中多餘的 len(a)
去掉。( 譯者注:瞭解 slice 以後就明白這爲何是多餘的了 )get
gofmt –r ‘A.Func1(a,b)-> A.Func2(b,a)’–w *.go
上面的代碼會將源文件中符合條件的函數的參數調換位置。cmd
若是想要了解有關 gofmt
的更多信息,請訪問該頁面:http://golang.org/cmd/gofmt/