Ordem de Execução dos Operadores Lógicos
Ao usar os operadores lógicos E (AND) e OU (OR), o Go precisa determinar os valores booleanos em ambos os lados do operador. Mas qual lado é avaliado primeiro?
Vamos explorar isso juntos.
Escreva o seguinte código em 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")
}
}
Execute o código:
cd ~/project
go run opePractice.go
Left function is called!
Right function is called!
Evaluation is complete
Não é difícil perceber que na operação lógica AND, o operando da esquerda é avaliado primeiro e, em seguida, o operando da direita é avaliado.
E quanto à operação lógica OR? Escreva o seguinte código em 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")
}
}
Execute o código:
cd ~/project
go run opePractice.go
Left function is called!
Logical OR evaluation is complete
A ordem de avaliação de ambas as operações lógicas AND e OR é da esquerda para a direita.
No entanto, na operação lógica OR, se o operando da esquerda for verdadeiro, o operando da direita não é avaliado. Isso é conhecido como avaliação de curto-circuito.
Portanto, no desenvolvimento real, devemos colocar as condições que têm maior probabilidade de serem verdadeiras no lado esquerdo do operador lógico OR, reduzindo o tempo de execução do programa.