第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

是否應(yīng)該將 return err 放入帶有聲明的 if 語(yǔ)句的 else 中,或者避免這種風(fēng)格并超出

是否應(yīng)該將 return err 放入帶有聲明的 if 語(yǔ)句的 else 中,或者避免這種風(fēng)格并超出

Go
哈士奇WWW 2022-10-24 09:10:23
在 Go 中,我們經(jīng)常在語(yǔ)句中編寫帶有聲明的代碼,if并且return err. 像這樣:    if res, err := getResult(); err != nil {        return err    } else {        fmt.Println(res)        // do something with res    }但是 linter 總是告訴我應(yīng)該在else之后刪除塊return:  ?  https://revive.run/r#indent-error-flow  if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary)代碼片段應(yīng)如下所示以滿足建議:    res, err := getResult()    if err != nil {        return err    }    fmt.Println(res)    // do something with res看來(lái)我們應(yīng)該避免在語(yǔ)句中使用if聲明。那么正確的 Go 風(fēng)格是什么?我應(yīng)該如何處理聲明中的if聲明?
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

Effective Go 中about 部分if對(duì)此提供了一些指導(dǎo):

如果成功的控制流順著頁(yè)面向下運(yùn)行,則代碼可讀性很好,從而消除了出現(xiàn)的錯(cuò)誤情況。由于錯(cuò)誤情況往往以return語(yǔ)句結(jié)尾,因此生成的代碼不需要else語(yǔ)句。


f, err := os.Open(name)

if err != nil {

  return err

}

d, err := f.Stat()

if err != nil {

  f.Close()

  return err

}

codeUsing(f, d)

如果你堅(jiān)持這種風(fēng)格,并且如果你打算error在你的“幸福路徑”中使用非結(jié)果,那么你根本不能在簡(jiǎn)單語(yǔ)句中將函數(shù)的結(jié)果聲明為變量,可以if在語(yǔ)句的條件之前;您別無(wú)選擇,只能將該變量聲明放在if. 但是,如果函數(shù)只返回一個(gè)error(或者您不關(guān)心它的其他結(jié)果),您可以自由地將變量聲明放在if:


// within some HTTP handler

var u User

dec := json.NewDecoder(w)

if err := dec.Decode(&u) {

   w.WriteHeader(http.StatusBadRequest)

   return

}

// use u


查看完整回答
反對(duì) 回復(fù) 2022-10-24
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

你可以查看官方的 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

}


查看完整回答
反對(duì) 回復(fù) 2022-10-24
?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

從uber 的 go 風(fēng)格指南代碼應(yīng)該盡可能減少嵌套。例如:


if a {

    return a

} else {

    return b

}

是一種糟糕的代碼編寫方式。這個(gè)不必要的 else 也應(yīng)該被刪除。


此外,如果您需要 if 塊之后的變量,則無(wú)需使用 if 塊聲明它們。你可以閱讀 uber 的 go style 文檔,它會(huì)幫助你編寫優(yōu)雅的 go 代碼。


分享

編輯

跟隨


查看完整回答
反對(duì) 回復(fù) 2022-10-24
  • 3 回答
  • 0 關(guān)注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)