Los Boolean en Go se representan mediante el tipo booleano predeclarado bool, cuyos valores pueden ser true o false.
Es un tipo definido.
var closed bool // boolean variable 'closed' implicitly initialized with 'false'
speeding := true // boolean variable 'speeding' initialized with 'true'
hasError := false // boolean variable 'hasError' initialized with 'false'
Go admite tres operadores lógicos que pueden reducir expresiones a valores Boolean, y devuelven true o false.
| Operador | Qué significa |
|---|---|
&& (y) |
Es verdadero si ambas afirmaciones son verdaderas. |
|| (o) |
Es verdadero si al menos una afirmación es verdadera. |
! (no) |
Es verdadero solo si la afirmación es falsa. |
En este ejercicio, vas a implementar la lógica de una misión para un nuevo juego de rol que está desarrollando un amigo. La protagonista del juego es Annalyn, una niña valiente que tiene un perro feroz y leal. Por desgracia, ocurre un desastre: su mejor amigo fue secuestrado mientras buscaba bayas en el bosque. Annalyn intentará encontrar y liberar a su mejor amigo, y puede llevar a su perro con ella en esta misión.
Después de seguir durante un tiempo el rastro de su mejor amigo, encuentra el campamento en el que está prisionero. Resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.
Una vez que encuentra a los secuestradores, Annalyn considera cuáles de las siguientes acciones puede llevar a cabo:
Tienes cuatro tareas: implementar la lógica para determinar si las acciones anteriores están disponibles según el estado de los tres personajes que hay en el bosque y si el perro de Annalyn está presente o no.
Define la función CanFastAttack() que recibe un valor Boolean que indica si el caballero está despierto.
Esta función devuelve true si se puede hacer un ataque rápido según el estado del caballero.
De lo contrario, devuelve false:
var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false
Define la función CanSpy() que recibe tres valores Boolean, que indican si el caballero, el arquero y el prisionero, respectivamente, están despiertos.
La función devuelve true si se puede espiar al grupo, según el estado de los tres personajes.
De lo contrario, devuelve false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true
Define la función CanSignalPrisoner() que recibe dos valores Boolean, que indican si el arquero y el prisionero, respectivamente, están despiertos.
La función devuelve true si se le pueden hacer señales al prisionero, según el estado de los dos personajes.
De lo contrario, devuelve false:
var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true
Define la función CanFreePrisoner() que recibe cuatro valores Boolean.
Los tres primeros parámetros indican si el caballero, el arquero y el prisionero, respectivamente, están despiertos.
El último parámetro indica si el perro de Annalyn está presente.
La función devuelve true si se puede liberar al prisionero según el estado de los tres personajes y la presencia del perro de Annalyn.
De lo contrario, devuelve false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.