Maison >développement back-end >Golang >Comment fonctionne l'évaluation des courts-circuits en Go ?

Comment fonctionne l'évaluation des courts-circuits en Go ?

DDD
DDDoriginal
2024-11-08 05:21:011069parcourir

How Does Short Circuit Evaluation Work in Go?

Évaluation de court-circuit en Go

En programmation informatique, l'évaluation de court-circuit est une technique d'optimisation qui améliore les performances des instructions conditionnelles en sautant les évaluation des conditions ultérieures une fois qu’une condition est remplie. Ce comportement est destiné à éviter des calculs inutiles, en particulier lorsqu'une condition implique implicitement le résultat des autres.

Évaluation du court-circuit de Go

Go suit le principe du court-circuit évaluation. En d’autres termes, dans une instruction if, Go n’évalue les conditions suivantes que si les précédentes ne sont pas remplies. Cela s'applique à la fois à l'instruction if-else et à l'instruction if sans clause else.

Comparaison des performances

Analysons les deux extraits de code fournis dans la question :

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")
}

Dans les deux cas, si r == nil ou len(queries) == 0, le La fonction isValidQueryParams ne sera pas appelée car l'expression globale est déjà fausse. Par conséquent, les optimisations de performances peuvent ne pas être significatives dans ce contexte particulier.

Exemple

Pour démontrer l'évaluation d'un court-circuit en action, considérons le code suivant :

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
}

L'exécution de ce code affichera :

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

Comme vous pouvez le voir, la fonction testFunc avec argument 2 n'est jamais appelé car la première condition (testFunc(1)) est toujours évaluée à true. Cela illustre comment l'évaluation des courts-circuits évite les appels de fonction inutiles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn