3 回答

TA貢獻1776條經驗 獲得超12個贊
Effective Go 中的about 部分if
對此提供了一些指導:
如果成功的控制流順著頁面向下運行,則代碼可讀性很好,從而消除了出現的錯誤情況。由于錯誤情況往往以return語句結尾,因此生成的代碼不需要else語句。
f, err := os.Open(name)
if err != nil {
return err
}
d, err := f.Stat()
if err != nil {
f.Close()
return err
}
codeUsing(f, d)
如果你堅持這種風格,并且如果你打算error在你的“幸福路徑”中使用非結果,那么你根本不能在簡單語句中將函數的結果聲明為變量,可以if在語句的條件之前;您別無選擇,只能將該變量聲明放在if. 但是,如果函數只返回一個error(或者您不關心它的其他結果),您可以自由地將變量聲明放在if:
// within some HTTP handler
var u User
dec := json.NewDecoder(w)
if err := dec.Decode(&u) {
w.WriteHeader(http.StatusBadRequest)
return
}
// use u

TA貢獻1805條經驗 獲得超10個贊
你可以查看官方的 GO 流量控制教程:https ://go.dev/tour/flowcontrol/7
func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v
} else {
fmt.Printf("%g >= %g\n", v, lim)
}
// can't use v here, though
return lim
}

TA貢獻1911條經驗 獲得超7個贊
從uber 的 go 風格指南代碼應該盡可能減少嵌套。例如:
if a {
return a
} else {
return b
}
是一種糟糕的代碼編寫方式。這個不必要的 else 也應該被刪除。
此外,如果您需要 if 塊之后的變量,則無需使用 if 塊聲明它們。你可以閱讀 uber 的 go style 文檔,它會幫助你編寫優雅的 go 代碼。
分享
編輯
跟隨
- 3 回答
- 0 關注
- 159 瀏覽
添加回答
舉報