Os booleanos em Go 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 suporta três operadores lógicos que podem avaliar expressões até obter valores booleanos, devolvendo true ou false.
| Operador | O que significa |
|---|---|
&& (and) |
É verdadeiro se ambas as afirmações forem verdadeiras. |
|| (or) |
É verdadeiro se pelo menos uma das afirmações for verdadeira. |
! (not) |
É verdadeiro apenas se a afirmação for falsa. |
Neste exercício, vais implementar a lógica da missão de um novo jogo de RPG que um amigo está a desenvolver. A personagem principal do jogo é a Annalyn, uma rapariga corajosa com um cão de estimação feroz e leal. Infelizmente, o desastre acontece: o seu melhor amigo foi sequestrado enquanto procurava bagas na floresta. A Annalyn vai tentar encontrar e libertar o seu melhor amigo, podendo levar o cão com ela nesta missão.
Depois de algum tempo a seguir o rasto do seu melhor amigo, encontra o acampamento onde ele está preso. Acontece que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.
Depois de encontrar os sequestradores, a Annalyn considera quais das seguintes ações pode realizar:
Tens quatro tarefas: implementar a lógica para determinar se as ações acima estão disponíveis, com base no estado das três personagens encontradas na floresta e na presença ou não do cão de estimação da Annalyn.
Define a função CanFastAttack() que recebe um valor boolean que indica se o cavaleiro está acordado.
Esta função devolve true se for possível fazer um ataque rápido, com base no estado do cavaleiro.
Caso contrário, devolve false:
var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false
Define a função CanSpy() que recebe três valores boolean que indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados.
A função devolve true se for possível espiar o grupo, com base no estado das três personagens.
Caso contrário, devolve false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true
Define a função CanSignalPrisoner() que recebe dois valores boolean que indicam se o arqueiro e o prisioneiro, respetivamente, estão acordados.
A função devolve true se for possível sinalizar o prisioneiro, com base no estado das duas personagens.
Caso contrário, devolve false:
var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true
Define a função CanFreePrisoner() que recebe quatro valores boolean.
Os primeiros três parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados.
O último parâmetro indica se o cão de estimação da Annalyn está presente.
A função devolve true se for possível libertar o prisioneiro, com base no estado das três personagens e na presença do cão de estimação da Annalyn.
Caso contrário, devolve false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.