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 关注
- 121 浏览
添加回答
举报