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