編譯這裏是找到了一些在Go階乘程序:Go代碼不無可達return語句
func factorial(x uint) uint {
if x == 0 {
return 1
}
return x * (factorial(x - 1))
}
輸出此功能在輸入5被稱爲是120。然而,當,如果我添加一個else
聲明,我收到一個錯誤。
func factorial(x uint) uint {
if x == 0 {
return 1
} else {
return x * (factorial(x - 1))
}
}
錯誤:function ends without a return statement
我在最後加了return
:
func factorial(x uint) uint {
if x == 0 {
return 1
} else {
return x * (factorial(x - 1))
}
fmt.Println("this never executes")
return 1
}
,我回來的120
預期的輸出爲什麼第二種情況引起的錯誤?爲什麼在第三種情況下,即使該功能從未達到最後的return 1
,它會計算正確的輸出?
轉到使用'if cond {return}; (顯然不在一行上)。當循環之後的任何東西都沒有執行時,你有無窮無盡的循環,常見的習慣用法是添加'panic(「unreachable」)'。 –
使最後一個陳述成爲恐慌(「從未到達」) – thwd