Boolesche Werte werden in Go durch den vordeklarierten booleschen Typ bool dargestellt, dessen Werte entweder true oder false sein können.
Es ist ein definierter Typ.
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 unterstützt drei logische Operatoren, die Ausdrücke zu booleschen Werten auswerten können und entweder true oder false zurückgeben.
| Operator | Was er bedeutet |
|---|---|
&& (und) |
Er ist wahr, wenn beide Aussagen wahr sind. |
|| (oder) |
Er ist wahr, wenn mindestens eine Aussage wahr ist. |
! (nicht) |
Er ist nur wahr, wenn die Aussage falsch ist. |
In dieser Übung implementierst du die Quest-Logik für ein neues RPG-Spiel, das ein Freund entwickelt. Die Hauptfigur des Spiels ist Annalyn, ein mutiges Mädchen mit einem wilden und treuen Hund. Doch dann schlägt das Unglück zu: Ihre beste Freundin wird entführt, während sie im Wald nach Beeren sucht. Annalyn versucht, ihre beste Freundin zu finden und zu befreien, wobei sie ihren Hund mit auf diese Quest nehmen kann.
Nachdem sie eine Zeit lang der Spur ihrer besten Freundin gefolgt ist, findet sie das Lager, in dem ihre beste Freundin gefangen gehalten wird. Es stellt sich heraus, dass es zwei Entführer gibt: einen mächtigen Ritter und einen gerissenen Bogenschützen.
Nachdem Annalyn die Entführer gefunden hat, überlegt sie, welche der folgenden Aktionen sie ausführen kann:
Du hast vier Aufgaben: die Logik zu implementieren, die anhand des Zustands der drei im Wald gefundenen Charaktere und der Anwesenheit von Annalyns Hund entscheidet, ob die oben genannten Aktionen möglich sind.
Definiere die Funktion CanFastAttack(), die einen booleschen Wert entgegennimmt, der angibt, ob der Ritter wach ist.
Diese Funktion gibt true zurück, wenn ein schneller Angriff basierend auf dem Zustand des Ritters möglich ist.
Andernfalls gibt sie false zurück:
var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false
Definiere die Funktion CanSpy(), die drei boolesche Werte entgegennimmt, die angeben, ob der Ritter, der Bogenschütze bzw. der Gefangene wach ist.
Die Funktion gibt true zurück, wenn die Gruppe ausspioniert werden kann, basierend auf dem Zustand der drei Charaktere.
Andernfalls gibt sie false zurück:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true
Definiere die Funktion CanSignalPrisoner(), die zwei boolesche Werte entgegennimmt, die angeben, ob der Bogenschütze bzw. der Gefangene wach ist.
Die Funktion gibt true zurück, wenn der Gefangene signalisiert werden kann, basierend auf dem Zustand der beiden Charaktere.
Andernfalls gibt sie false zurück:
var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true
Definiere die Funktion CanFreePrisoner(), die vier boolesche Werte entgegennimmt.
Die ersten drei Parameter geben an, ob der Ritter, der Bogenschütze bzw. der Gefangene wach ist.
Der letzte Parameter gibt an, ob Annalyns Hund anwesend ist.
Die Funktion gibt true zurück, wenn der Gefangene befreit werden kann, basierend auf dem Zustand der drei Charaktere und der Anwesenheit von Annalyns Hund.
Andernfalls gibt sie false zurück:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.