我有一個關於Go的問題gofmt工具,根據官方的Go規格自動格式化程序的輸出(例如,你不能爭論括號應該在Go中的位置,因爲這顯然是由規格固定的) 。Go的gofmt和diff/VCS問題?
在接下來的頁面:
http://golang.org/doc/effective_go.html
下的「格式化」的段落,寫的是:
舉個例子,有沒有必要花時間排隊的評論上 結構的領域。 Gofmt會爲你做到這一點。鑑於 聲明
type T struct {
name string // name of the object
value int // its value
}
gofmt會排隊列:
type T struct {
name string // name of the object
value int // its value
}
不過,我不明白這到底是怎麼可能發揮好與差異和VCSes。
舉例來說,如果我有一個新的生產線:
confuzzabler int // doo doo be doo
和運行差異,我應該得到這樣的:
2d1
< confuzzabler int // doo doo be doo
7d5
<
而且生活將是所有好:DIFF節目唯一的一條線被改變了。
但是,如果我重新運行gofmt我得到這個:
type T struct {
confuzzabler int // doo doo be doo
name string // name of the object
value int // its value
}
現在我重新運行diff和我得到這個:
2,4c2,3
< confuzzabler int // doo doo be doo
< name string // name of the object
< value int // its value
---
> name string // name of the object
> value int // its value
7d5
<
這是一個非常混亂,誤導比較輸出,因爲只有一行更改。
你如何處理這個Go開發者?
在此之前獲得票選爲「offtopic」請閱讀FAQ SO這裏: http://stackoverflow.com/faq 其中明確規定,所以是「正確的地方」 [原文]問有關編程的問題工具(我必須說明這一點,因爲最近我有一個關於工具downvoted的問題,有人投票結束它......當然沒有建議其他地方發佈我的問題)。 – SyntaxT3rr0r
我意識到這主要是強調* diff *工具的缺點,它們太愚蠢了,理解這兩個源代碼實際上是完全一樣的Go程序,但我仍然有興趣知道應該如何處理這個* gofmt *問題。 – SyntaxT3rr0r
@Jonathan Leffler:如果你仔細閱讀我的問題,你會發現那正是**我正在描述的問題。由於* gofmt *的性質,對源代碼進行微小的更改可以使* gofmt *更改幾行代碼,即使您只是更改了一行(因爲它正在重新對齊所有**行,而不是隻是你添加的那個)。這是典型的驅動開發者的堅果,因爲它產生了「無爲」的差異。只要看看這裏有多少人抱怨人們在做那種* gofmt *所做的對準,「因爲它彌補了差異」。 – SyntaxT3rr0r