2013-10-01 26 views
4

我可以使用任何函數,並在其中間放置panic("don't"),而不是在任何分支或循環內(使剩餘的函數「死」代碼),並且go編譯器將愉快地編譯和運行,而不報告作爲問題。在設計中,golang中未檢測​​到/報告死代碼?

任何人都知道這是否是由設計? (編譯器大聲地抱怨未使用的導入,爲什麼不使用死代碼......)自從Go 1發佈以來,他們無法現在回去改變這種行爲,他們會破壞現有的格式良好的代碼。只是想知道這是一個疏忽還是有意的。如果我認爲它必須等到Go 2(他們可以打破東西),那麼我們就應該等待。

+1

對此的一些討論:https://groups.google.com/forum/#!topic/golang-nuts/D-mmT10VBEA – Intermernet

+4

@Kevin你的意思是「去獸醫」,是有道理的。 (比較「go vert」http://www.urbandictionary.com/define.php?term=Go%20Vert) –

+0

死代碼並不是一個真正的大問題,大多數情況下它並不表示像一個未使用的變量由於意外重新宣佈而未使用。 「恐慌」或「返回」很容易被發現。死代碼稍微增加了二進制大小,但比未使用的導入少得多。所以:爲什麼要花費精心編寫的死代碼檢測(可能無法捕捉到每一個死代碼)並減慢編譯速度? – Volker

回答

1

簡短回答:沒有人真的給老鼠屁股。

較長的答案:

由於@Volker指出,它沒有很大的區別。

我的問題是特別是如果這種行爲是由設計。 (這可能是一個糟糕的問題,但是哦。)正在查看這是否是故意的,或只是一個疏忽。

Java和其他語言這樣做,我試圖看看是否有一些「不,我們不這樣做,因爲...」。似乎並非如此。從我可以收集它只是不是一個重要的問題花時間投入。

我問了這個here以及答覆基本上是,這是預期的,對不起,你不喜歡它,它不會改變。它已被添加到go vet,這應該就足夠了。這很好 - 我同意。