在程式設計中,短路求值是一種僅在需要確定周圍語句的結果時才對錶達式求值的技術。這通常用在條件語句中,如果先前的條件已經為 false,則無需對多個條件進行求值。
Go 實作邏輯運算子(&& 和 ||)的短路求值,與許多其他程式設計類似語言。這意味著在 if 語句中,解釋器將從左到右評估條件,並在知道結果後立即停止。
關於提供的程式碼範例,條件的評估順序不會影響程式的效能。在 Go 中,兩個程式碼片段的行為方式相同。編譯器將從左到右計算表達式,並在確定結果後立即短路計算。
為了示範這一點,請考慮以下程式碼:
package main import "fmt" func main() { var r *http.Request queries := make(map[string][]string) if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) { fmt.Println("Invalid querystring") } }
儘管 isValidQueryParams 的開銷比 r == nil 和 len(queries) == 0 更多,但一旦結果明確,編譯器就會按順序計算表達式並短路。因此,範例中的兩個程式碼片段之間沒有效能差異。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3