Tip #16 不要通过返回 -1 或者 nil 来表示错误
原始链接:Golang Tip #16: Don't Return -1 or nil to Indicate Error.
在其他语言中,函数通常通过返回特殊值如-1、null、""等来表示错误或缺失的结果。
这被称为“带内错误”(in-band errors)。
使用 in-band 错误的主要问题是,需要调用者记住每次都要检查返回的特殊值。
但这是...非常容易出错的。
此外,在 Go 中这种方法其实并不是最好的方法(甚至不是好的),因为 Go 可以支持多返回值。
Go的解决方案是:多返回值
函数可以返回其通常的结果以及额外的值(错误或布尔值),明确表示操作是否成功。
这可以使得代码更加清晰。
在不检查表明是否成功的返回值(ok bool)的情况下使用结果会导致编译时错误。
这迫使我们必须明确处理可能的错误:
现在,您的代码便拥有了 3 个优势(您甚至不需要额外关心):
明确的关注点分离
返回值明确的表示了的哪部分是实际结果,哪部分表示操作的成功或失败。
强制错误处理
Go 编译器要求开发人员处理错误的可能性,从而降低忽略错误的风险(因此,请勿使用 “_
” 来忽略错误)。
提高可读性和可维护性
代码可以明确地解释自身的行为(documents itself)。