失敗的原因在于,Go編譯器無法找到終止該函數(shù)的 return 語(yǔ)句。編譯失敗的案例如下:func example(x int) int { if x == 0 { return 5
} else { return x
}
}
3 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
golang 1.4 版本的bug,最新1.7,更新吧。
1.4 可以寫成:
func example(x int) int { if x == 0 { return 5 } return x }

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
Effective Go里說了:
In the Go libraries, you'll find that when an if statement doesn't flow into the next statement—that is, the body ends in break, continue, goto, or return—the unnecessary else is omitted.
f, err := os.Open(name, os.O_RDONLY, 0) if err!=nil { return err } codeUsing(f)
也就是說當(dāng)你if完了之后狀態(tài)不會(huì)再有改變,不會(huì)有其他情況發(fā)生的時(shí)候,else應(yīng)該被省略。
所以去掉else吧,因?yàn)榫幾g器它看來你需要有一個(gè)default return。
改好之后是這樣:
func example(x int) int { if x == 0 { return 5 } return x }
- 3 回答
- 0 關(guān)注
- 1008 瀏覽
添加回答
舉報(bào)
0/150
提交
取消