Orden de Ejecución de los Operadores Lógicos
Al usar los operadores lógicos AND y OR, Go necesita determinar los valores booleanos en ambos lados del operador. Pero, ¿qué lado se evalúa primero?
Explorémoslo juntos.
Escribe el siguiente código en opePractice.go:
package main
import "fmt"
func leftFunc(flag bool) bool {
fmt.Println("¡Se llama a la función izquierda!")
return flag
}
func rightFunc(flag bool) bool {
fmt.Println("¡Se llama a la función derecha!")
return true
}
func main() {
if leftFunc(true) && rightFunc(true) {
fmt.Println("La evaluación se ha completado")
}
}
Ejecuta el código:
cd ~/project
go run opePractice.go
¡Se llama a la función izquierda!
¡Se llama a la función derecha!
La evaluación se ha completado
No es difícil notar que en la operación lógica AND, primero se evalúa el operando de la izquierda y luego el de la derecha.
¿Qué sucede con la operación lógica OR? Escribe el siguiente código en opePractice.go:
package main
import "fmt"
func leftFunc(flag bool) bool {
fmt.Println("¡Se llama a la función izquierda!")
return flag
}
func rightFunc(flag bool) bool {
fmt.Println("¡Se llama a la función derecha!")
return true
}
func main() {
if leftFunc(true) || rightFunc(true) {
fmt.Println("La evaluación lógica OR se ha completado")
}
}
Ejecuta el código:
cd ~/project
go run opePractice.go
¡Se llama a la función izquierda!
La evaluación lógica OR se ha completado
El orden de evaluación tanto para el AND lógico como para el OR lógico es de izquierda a derecha.
Sin embargo, en la operación lógica OR, si el operando de la izquierda es verdadero, el operando de la derecha no se evalúa (esto se conoce como cortocircuito).
Por lo tanto, en el desarrollo real, debemos colocar las condiciones que tienen más probabilidades de ser verdaderas en el lado izquierdo del operador lógico OR, reduciendo así el tiempo de ejecución del programa.