Shi*_*hat 1 if-statement go conditional-statements
A 与 B 相同吗?
A
if err := json.NewDecoder(r.Body).Decode(&t); err != nil {
rnd.JSON(w, http.StatusProcessing, err)
return
}
Run Code Online (Sandbox Code Playgroud)
乙
err := json.NewDecoder(r.Body).Decode(&t);
if err != nil {
rnd.JSON(w, http.StatusProcessing, err)
return
}
Run Code Online (Sandbox Code Playgroud)
除了一个区别之外,它们是等效的:变量的范围err。在 A 版本中,变量的范围err是这样if的语句:在if.
在 B 版本中,err变量也将在if语句之后的范围内,如果err之前已经定义了,则也可能导致编译时错误。
始终最小化变量的范围是一个很好的做法(这样可以减少误用它们的机会)。如果您不想进一步检查 后返回的错误if,最好使用 A 版本。如果您在 后确实需要它if,那么显然 B 版本是最佳选择。