返回可选值和可能错误的函数的最佳签名是什么?
例如:
func findColor(name string) (RGB, error) {
...
}
(空的 RGB 值是黑色,一种有效的颜色,因此您不能用它来推断未找到值。假设错误可能来自数据库连接之类的东西。)
看起来最好的两个选项是布尔返回值:
func findColor(name string) (RGB, bool, error) {
...
}
c, ok, err := findColor(myname)
if !ok {
...
} else if err != nil {
...
}
...
或者一个特殊的错误值:
var ColorNotFound = errors.New(...)
func findColor(name string) (RGB, error) {
...
}
c, err := findColor(...)
if err == ColorNotFound {
...
} else if err != nil {
...
}
...
(犯特殊错误似乎很痛苦。)
最惯用的方法是什么?
湖上湖
相关分类