我对短路评估的理解是,仅在 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,看到它是真的而不费心去评估其他条件?
编辑:错误地将短路评估称为惰性评估
慕沐林林
互换的青春
ibeautiful
相关分类