Go での短絡評価
コンピューター プログラミングにおいて、短絡評価は、条件文をスキップすることで条件文のパフォーマンスを向上させる最適化手法です。 1 つの条件が満たされると、その後の条件が評価されます。この動作は、特に 1 つの条件が他の条件の結果を暗黙的に暗示している場合に、不必要な計算を避けることを目的としています。
Go の短絡評価
Go は短絡の原理に従います。評価。言い換えれば、if ステートメントでは、Go は前の条件が満たされない場合にのみ後続の条件を評価します。これは、if-else ステートメントと else 句のない if ステートメントの両方に当てはまります。
パフォーマンスの比較
質問に示されている 2 つのコード スニペットを分析してみましょう。
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") }
どちらの場合も、r == nil または len(queries) == 0 の場合、式全体がすでに false であるため、isValidQueryParams 関数は呼び出されません。したがって、この特定のコンテキストでは、パフォーマンスの最適化は重要ではない可能性があります。
例
実際の短絡評価を示すために、次のコードを検討してください。
package main import "fmt" func main() { for i := 0; i < 10; i++ { if testFunc(1) || testFunc(2) { // do nothing } } } func testFunc(i int) bool { fmt.Printf("function %d called\n", i) return true }
このコードを実行すると次が出力されます:
function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called function 1 called
ご覧のとおり、最初の条件 (testFunc(1)) は常に true と評価されるため、引数 2 を持つ testFunc 関数は呼び出されません。これは、短絡評価によって不要な関数呼び出しがどのように防止されるかを示しています。
以上がGo での短絡評価はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。