我对短路评估的理解是只在if语句中需要时调用表达式.Go会跟着这个吗?
例如,我平均可以从以下方面获得更好的表现:
if !isValidQueryParams(&queries) || r == nil || len(queries) == 0 {
return "", fmt.Errorf("invalid querystring")
}
Run Code Online (Sandbox Code Playgroud)
......对此:
if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) {
return "", fmt.Errorf("invalid querystring")
}
Run Code Online (Sandbox Code Playgroud)
...因为这isValidQueryParams
是一个比r == nil
测试地图长度要多得多的功能?
也就是说,解释员首先会评估r == nil,看到它是真的而不是费心去评估其他条件吗?
编辑:错误地将短路评估称为惰性评估