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
Libérer: 2024-11-08 05:21:01
original
1091 Les gens l'ont consulté

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")
}
Copier après la connexion
if r == nil || len(queries) == 0 || !isValidQueryParams(&queries) {
    return "", fmt.Errorf("invalid querystring")
}
Copier après la connexion

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
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal