Οι Boolean (λογικές τιμές) στη Go αντιπροσωπεύονται από τον προδηλωμένο boolean τύπο bool, του οποίου οι τιμές μπορούν να είναι είτε true είτε false.
Είναι ένας ορισμένος τύπος.
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 υποστηρίζει τρεις λογικούς τελεστές που μπορούν να αξιολογήσουν εκφράσεις σε τιμές Boolean, επιστρέφοντας είτε true είτε false.
| Τελεστής | Τι σημαίνει |
|---|---|
&& (και) |
Είναι αληθής αν και οι δύο προτάσεις είναι αληθείς. |
|| (ή) |
Είναι αληθής αν τουλάχιστον μία πρόταση είναι αληθής. |
! (όχι) |
Είναι αληθής μόνο αν η πρόταση είναι ψευδής. |
Σε αυτή την άσκηση, θα υλοποιήσεις τη λογική της αποστολής για ένα νέο παιχνίδι RPG που αναπτύσσει ένας φίλος. Η κεντρική ηρωίδα του παιχνιδιού είναι η Annalyn, ένα γενναίο κορίτσι με ένα άγριο και πιστό σκυλί. Δυστυχώς, η καταστροφή χτυπά, καθώς ο καλύτερός της φίλος απήχθη ενώ έψαχνε για μούρα στο δάσος. Η Annalyn θα προσπαθήσει να βρει και να ελευθερώσει τον καλύτερό της φίλο, παίρνοντας προαιρετικά μαζί της τον σκύλο της σε αυτή την αποστολή.
Αφού πέρασε κάποιο χρόνο ακολουθώντας τα ίχνη του καλύτερού της φίλου, βρίσκει το στρατόπεδο όπου κρατείται ο καλύτερός της φίλος. Αποδεικνύεται ότι υπάρχουν δύο απαγωγείς: ένας κραταιός ιππότης και ένας πονηρός τοξότης.
Έχοντας βρει τους απαγωγείς, η Annalyn σκέφτεται ποιες από τις παρακάτω ενέργειες μπορεί να κάνει:
Έχεις τέσσερις εργασίες: να υλοποιήσεις τη λογική που καθορίζει αν οι παραπάνω ενέργειες είναι διαθέσιμες με βάση την κατάσταση των τριών χαρακτήρων που βρίσκονται στο δάσος και αν ο σκύλος της Annalyn είναι παρών ή όχι.
Όρισε τη συνάρτηση CanFastAttack() που παίρνει μία τιμή Boolean (λογική τιμή) που δείχνει αν ο ιππότης είναι ξύπνιος.
Αυτή η συνάρτηση επιστρέφει true αν μπορεί να γίνει γρήγορη επίθεση με βάση την κατάσταση του ιππότη.
Διαφορετικά, επιστρέφει false:
var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false
Όρισε τη συνάρτηση CanSpy() που παίρνει τρεις τιμές Boolean, που δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η συνάρτηση επιστρέφει true αν μπορείς να κατασκοπεύσεις την ομάδα, με βάση την κατάσταση των τριών χαρακτήρων.
Διαφορετικά, επιστρέφει false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true
Όρισε τη συνάρτηση CanSignalPrisoner() που παίρνει δύο τιμές Boolean, που δείχνουν αν ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η συνάρτηση επιστρέφει true αν μπορείς να δώσεις σήμα στον κρατούμενο, με βάση την κατάσταση των δύο χαρακτήρων.
Διαφορετικά, επιστρέφει false:
var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true
Όρισε τη συνάρτηση CanFreePrisoner() που παίρνει τέσσερις τιμές Boolean.
Οι τρεις πρώτες παράμετροι δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι.
Η τελευταία παράμετρος δείχνει αν ο σκύλος της Annalyn είναι παρών.
Η συνάρτηση επιστρέφει true αν μπορείς να ελευθερώσεις τον κρατούμενο με βάση την κατάσταση των τριών χαρακτήρων και την παρουσία του σκύλου της Annalyn.
Διαφορετικά, επιστρέφει false:
var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.