这些行代码在golang中是否相同?

A 和 B 一样吗?


A


if err := json.NewDecoder(r.Body).Decode(&t); err != nil {

    rnd.JSON(w, http.StatusProcessing, err)

    return

}


err := json.NewDecoder(r.Body).Decode(&t);

if err != nil {

    rnd.JSON(w, http.StatusProcessing, err)

    return

}


眼眸繁星
浏览 91回答 1
1回答

繁星coding

它们是等价的,除了一个区别:err变量的范围。在 A 版本中,err变量的范围是if声明:在if.在 B 版本中,err变量也将在if语句之后的范围内,如果err之前已经定义,它也可能导致编译时错误。最好始终最小化变量的范围(这样可以减少滥用它们的机会)。如果你不想在 之后进一步检查返回的错误if,最好使用 A 版本。如果您在 之后确实需要它if,那么显然 B 版本是最佳选择。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go