Los operadores lógicos o relacionales, permiten evaluar uno o dos valores, pero, a diferencia de los operadores de comparación, ni realiza una comparación ni evalúa valores numéricos o de cadena, si no valores exclusivamente lógicos.
La utilidad de estos operadores es evaluar condiciones complejas, en las que existen varias circunstancias, estableciendo una relación entre ellas.
Los operadores lógicos o relacionales en Go son los siguientes:
valor1 && valor2 AND/Y valor2 || valor2 OR/O !valor NOT/NO (negación)
Operador && (AND/Y)
El operador && retornará un valor true si los dos valores lógicos comparados valen true.
true && true = true true && false = false false && true = false false && false = false
Operador || (OR/O)
El operador || retornará un valor true si, al menos uno de los dos valores lógicos comparados vale true.
true || true = true true || false = true false || true = true false || false = false
Operador ! (NOT/NO)
El operador ! retornará el valor contrario al evaluado (niega el valor).
!true = false !false = true
Precedencia de los operadores
Cuando se evalúa más de una relación, el orden de precedencia será de izquierda a derecha. Se evalúan los dos primeros valores, y el resultado de éste, se evaluará con el tercero, y así, sucesivamente, hasta el final.
true || false && false || true // Paso a paso [true || false] && false || true true && false || true [true && false] || true false || true true
Si se utiliza los paréntesis, las evaluaciones englobadas entre ellos se priorizarán, también de izquierda a derecha.
true || (false && false) || true || (true && false) // Paso a paso true || (false && false) || true || (true && false) true || [(false && false)] || true || (true && false) true || false || true || (true && false) true || false || true || [(true && false)] true || false || true || false [true || false] || true || false true || true || false [true || true] || false true || false true
Ejemplo
package main
import "fmt"
func main() {
var (
edadRafael int = 47
edadNerea int = 16
edadGoyi int = 69
)
fmt.Println("Rafael en edad de trabajar: ",
edadRafael >= 16 && edadRafael <= 67)
fmt.Println("Goyi en edad de trabajar: ",
edadGoyi >= 16 && edadGoyi <= 67)
fmt.Println("Nerea en edad de trabajar: ",
edadNerea >= 16 && edadNerea <= 67)
fmt.Println("Rafael mayor de edad: ", !(edadRafael < 18))
fmt.Println("Goyi mayor de edad: ", !(edadGoyi < 18))
fmt.Println("Nerea mayor de edad: ", !(edadNerea < 18))
fmt.Println("true || false && false || true - ",
true || false && false || true)
fmt.Println("true || (false&&false) ||true|| (true&&false) - ",
true || (false && false) || true || (true && false))
}
El resultado será el siguiente:
$ go run oper-logicos.go Rafael en edad de trabajar: true Goyi en edad de trabajar: false Nerea en edad de trabajar: true Rafael mayor de edad: true Goyi mayor de edad: true Nerea mayor de edad: false true || false && false || true - true true || (false && false) || true || (true && false) - true
Enlaces de interés
- Operadores de comparación en Go: https://territoriogo.blogspot.com/2018/11/operadores-de-comparacion-en-go.html
- The Go Programming Language Specification - Operators: https://golang.org/ref/spec#Operators

No hay comentarios:
Publicar un comentario