我有以下功能:有沒有什麼辦法可以避免包含無法訪問的return語句?
func fitrange(a, x, b int) int {
if a > b {
a, b = b, a
}
switch true {
case x < a:
return a
case x > b:
return b
default:
return x
}
}
轉到編譯器抱怨說,「函數沒有返回語句結束」即使通過switch
聲明每一個可能的路徑返回一個值。除了在函數的末尾添加虛擬return
聲明之外,有什麼方法可以解決這個問題嗎?
雖然這是事實,但我認爲它不應該是正確的答案。唯一一次在函數結尾出現「恐慌(」無法訪問「)'意義的是當你有一個永不停息的無限循環時。 –
@StephenWeinberg:我不同意。 'panic(「Unreachable」)遠遠好於你不認爲可能會被擊中的return語句,因爲a)它表示程序員期望這段代碼無法訪問,b)預期返回語句從未被擊中可能不會返回一些明智的東西,所以最好是恐慌而不是潛在的腐敗數據。 –
這是真的,但在示例代碼中,您可以將默認值移動到函數的末尾。沒有使用「恐慌」,它會有相同的效果。看Ryan的答案。我沒有使用'panic'的問題,但是隻有在您確信沒有辦法修改代碼才能讓最後一條語句返回時。 –