I booleani in Go sono rappresentati dal tipo booleano predefinito bool, i cui valori possono essere true o false.
È un tipo definito.
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 supporta tre operatori logici che possono ridurre le espressioni a valori booleani, restituendo true o false.
| Operatore | Cosa significa |
|---|---|
&& (and) |
È vero se entrambe le affermazioni sono vere. |
|| (or) |
È vero se almeno un'affermazione è vera. |
! (not) |
È vero solo se l'affermazione è falsa. |
In questo esercizio, implementerai la logica della quest per un nuovo gioco di ruolo che un amico sta sviluppando. La protagonista del gioco è Annalyn, una ragazza coraggiosa con un cane fedele e feroce. Purtroppo arriva la catastrofe: la sua migliore amica è stata rapita mentre cercava bacche nel bosco. Annalyn proverà a trovare e liberare la sua migliore amica, portando con sé il cane, se lo desidera, in questa quest.
Dopo un po' di tempo passato a seguire le tracce della sua migliore amica, trova l'accampamento in cui è imprigionata. Scopre che i rapitori sono due: un cavaliere possente ed un arciere astuto.
Una volta trovati i rapitori, Annalyn valuta quali delle seguenti azioni può intraprendere:
Hai quattro compiti: implementare la logica che determina se le azioni precedenti sono disponibili, in base allo stato dei tre personaggi trovati nel bosco ed alla presenza o meno del cane di Annalyn.
Definisci la funzione CanFastAttack(), che accetta un valore booleano che indica se il cavaliere è sveglio.
Questa funzione restituisce true se è possibile sferrare un attacco rapido in base allo stato del cavaliere.
Altrimenti restituisce false:
var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false
Definisci la funzione CanSpy(), che accetta tre valori booleani che indicano, rispettivamente, se il cavaliere, l'arciere ed il prigioniero sono svegli.
La funzione restituisce true se è possibile spiare il gruppo, in base allo stato dei tre personaggi.
Altrimenti restituisce false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true
Definisci la funzione CanSignalPrisoner(), che accetta due valori booleani che indicano, rispettivamente, se l'arciere ed il prigioniero sono svegli.
La funzione restituisce true se si può segnalare al prigioniero, in base allo stato dei due personaggi.
Altrimenti restituisce false:
var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true
Definisci la funzione CanFreePrisoner(), che accetta quattro valori booleani.
I primi tre parametri indicano, rispettivamente, se il cavaliere, l'arciere ed il prigioniero sono svegli.
L'ultimo parametro indica se il cane di Annalyn è presente.
La funzione restituisce true se il prigioniero può essere liberato, in base allo stato dei tre personaggi ed alla presenza del cane di Annalyn.
Altrimenti restituisce false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti165 esercizi e il mentoring di persone reali, tutto gratis.