Em Go, os Boolean são representados pelo tipo booleano predeclarado bool, cujos valores podem ser true ou false.
É um 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 oferece três operadores lógicos que podem reduzir expressões a valores Boolean, retornando true ou false.
| Operador | O que significa |
|---|---|
&& (and) |
É verdadeiro se as duas afirmações forem verdadeiras. |
|| (or) |
É verdadeiro se pelo menos uma afirmação for verdadeira. |
! (not) |
É verdadeiro apenas se a afirmação for falsa. |
Neste exercício, você vai implementar a lógica da missão de um novo jogo de RPG que um amigo está desenvolvendo. O personagem principal do jogo é Annalyn, uma garota corajosa com um cachorro de estimação feroz e leal. Infelizmente, o desastre acontece: seu melhor amigo foi sequestrado enquanto procurava frutinhas na floresta. Annalyn vai tentar encontrar e libertar seu melhor amigo, podendo levar o cachorro com ela nessa missão.
Depois de algum tempo seguindo a trilha do seu melhor amigo, ela encontra o acampamento onde ele está preso. Acontece que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.
Tendo encontrado os sequestradores, Annalyn considera quais das seguintes ações ela pode realizar:
Você tem quatro tarefas: implementar a lógica para determinar se as ações acima estão disponíveis com base no estado dos três personagens encontrados na floresta e se o cachorro de Annalyn está presente ou não.
Defina a função CanFastAttack() que recebe um valor Boolean que indica se o cavaleiro está acordado.
Essa função retorna true se um ataque rápido puder ser feito com base no estado do cavaleiro.
Caso contrário, retorna false:
var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false
Defina a função CanSpy() que recebe três valores Boolean, indicando se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados.
A função retorna true se o grupo puder ser espionado, com base no estado dos três personagens.
Caso contrário, retorna false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true
Defina a função CanSignalPrisoner() que recebe dois valores Boolean, indicando se o arqueiro e o prisioneiro, respectivamente, estão acordados.
A função retorna true se o prisioneiro puder ser sinalizado, com base no estado dos dois personagens.
Caso contrário, retorna false:
var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true
Defina a função CanFreePrisoner() que recebe quatro valores Boolean.
Os três primeiros parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados.
O último parâmetro indica se o cachorro de Annalyn está presente.
A função retorna true se o prisioneiro puder ser libertado com base no estado dos três personagens e na presença do cachorro de Annalyn.
Caso contrário, retorna false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.