Ordre d'exécution des opérateurs logiques
Lors de l'utilisation des opérateurs logiques ET (&&
) et OU (||
), Go doit déterminer les valeurs booléennes des deux côtés de l'opérateur. Mais quel côté est évalué en premier?
Explorons cela ensemble.
Écrivez le code suivant dans opePractice.go
:
package main
import "fmt"
func leftFunc(flag bool) bool {
fmt.Println("Left function is called!")
return flag
}
func rightFunc(flag bool) bool {
fmt.Println("Right function is called!")
return true
}
func main() {
if leftFunc(true) && rightFunc(true) {
fmt.Println("Evaluation is complete")
}
}
Exécutez le code :
cd ~/project
go run opePractice.go
Left function is called!
Right function is called!
Evaluation is complete
Il n'est pas difficile de constater que dans l'opération logique ET, l'opérande de gauche est évalué en premier, puis l'opérande de droite est évalué.
Et que se passe-t-il dans l'opération logique OU? Écrivez le code suivant dans opePractice.go
:
package main
import "fmt"
func leftFunc(flag bool) bool {
fmt.Println("Left function is called!")
return flag
}
func rightFunc(flag bool) bool {
fmt.Println("Right function is called!")
return true
}
func main() {
if leftFunc(true) || rightFunc(true) {
fmt.Println("Logical OR evaluation is complete")
}
}
Exécutez le code :
cd ~/project
go run opePractice.go
Left function is called!
Logical OR evaluation is complete
L'ordre d'évaluation des opérations logiques ET et OU est de gauche à droite.
Cependant, dans l'opération logique OU, si l'opérande de gauche est vrai, l'opérande de droite n'est pas évalué.
Par conséquent, dans le développement réel, nous devrions placer les conditions les plus susceptibles d'être vraies du côté gauche de l'opérateur logique OU, afin de réduire le temps d'exécution du programme.