我理解的短路评估是在if语句中只有在需要时才调用表达式。Go语言是否遵循这种做法?
例如,我是否可以从以下方式中获得更好的平均性能:
if !isValidQueryParams(&queries) || r == nil || len(queries) == 0 {
return "", fmt.Errorf("invalid querystring")
}
把这个转换成这样:if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) {
return "", fmt.Errorf("invalid querystring")
}
...因为isValidQueryParams
是一个比r == nil
或测试映射长度开销更大的函数?
即解释器会先评估r == nil,看到它是true,不会费心去评估其他条件吗?
编辑:错误地将短路求值称为惰性求值