2013-09-30 58 views
68

是否有一個標準的Google Go編碼約定文檔,用於設置在Go源代碼中是否首選縮進或製表符?如果不是,那麼(統計上)更受歡迎的選擇是什麼?Go中的縮進:製表符或空格?

  1. 什麼是官方建議? (如有)
  2. 什麼是更受歡迎的選擇?
+2

https://medium.com/@hoffa/400-000-github-repositories-1-billion-files-14-terabytes-of -code-spaces-or-tabs-7cfe0b5dd7fd#.o1d3cmm5r –

回答

97

的官方建議與

go fmt 

格式化你的代碼或使用gofmt命令直接

gofmt -w . 

你可以閱讀更多關於它here在golang.org博客,或Effective go文件:

縮進
我們使用製表符縮進,gofmt默認發射它們。只有必要時才使用空格。

+14

好的,所以它是標籤。 –

+1

是的,縮進標籤是官方建議。 @Intermernet指出,您可以使用空格縮進,但這不是建議。 – ANisus

+13

@ErikAllik,實際上,官方位置不是「使用選項卡」,而是「在提交代碼前使用'fmt'」(注意還有'gofmt')。我試圖強調的是,Go做到了這一點*正確*不只是宣佈一項政策,而是通過採用強制執行這一政策的工具。這種情況並不常見,因此請儘量繞開這個想法並採用'go fmt'。請注意,甚至有自動化的解決方案(例如,官方Go插件Vim支持':Fmt'命令,IIRC)。 – kostix

12

根據http://golang.org/src/cmd/gofmt/doc.go的默認設置爲:

編輯:底部的原來的答案是不正確現在。鏈接源文件(當前25/07/2014)的正確部分是:

Gofmt格式Go程序。
它使用製表符(width = 8)進行縮進和空白對齊。

原來的答覆(不推薦):

Formatting control flags: 
    -comments=true 
     Print comments; if false, all comments are elided from the output. 
    -tabs=true 
     Indent with tabs; if false, spaces are used instead. 
    -tabwidth=8 
     Tab width in spaces. 
+3

'-tabs'和'-tabwidth' [[去]](https://code.google.com/p/go/issues/detail?id = 7101)(並且'-comments'至少不再被記錄;沒有看得更仔細) – William

+1

@billisphere謝謝,我已經用鏈接文件的相關部分更新了答案。 – Intermernet

+4

當您使用製表符時,不會使用特定的製表符寬度,因此(以前的)製表符寬度選項不起作用,更新文本的「寬度= 8」部分應該被刪除。這個錯誤也存在於鏈接的源代碼中。 – thomasrutter

相關問題