Όπως και άλλες γλώσσες, η Go παρέχει επίσης μια εντολή switch.
Οι εντολές switch είναι ένας πιο σύντομος τρόπος για να γράψεις μεγάλες εντολές if ... else if.
Για να φτιάξεις ένα switch, ξεκινάς χρησιμοποιώντας τη λέξη-κλειδί switch ακολουθούμενη από μια τιμή ή μια έκφραση.
Στη συνέχεια δηλώνεις καθεμία από τις συνθήκες με τη λέξη-κλειδί case.
Μπορείς επίσης να δηλώσεις μια περίπτωση default, που θα εκτελεστεί όταν καμία από τις προηγούμενες συνθήκες case δεν ταιριάζει:
operatingSystem := "windows"
switch operatingSystem {
case "windows":
// do something if the operating system is windows
case "linux":
// do something if the operating system is linux
case "macos":
// do something if the operating system is macos
default:
// do something if the operating system is none of the above
}
Ένα ενδιαφέρον στοιχείο των εντολών switch είναι ότι η τιμή μετά τη λέξη-κλειδί switch μπορεί να παραλειφθεί, και μπορείς να έχεις boolean συνθήκες για κάθε case:
age := 21
switch {
case age > 20 && age < 30:
// do something if age is between 20 and 30
case age == 10:
// do something if age is equal to 10
default:
// do something else for every other case
}
Σε αυτή την άσκηση θα προσομοιώσουμε τον πρώτο γύρο ενός παιχνιδιού Blackjack.
Θα λάβεις δύο φύλλα και θα μπορείς να δεις το ανοιχτό φύλλο του ντίλερ. Όλα τα φύλλα αναπαρίστανται με μια συμβολοσειρά όπως "ace", "king", "three", "two" κ.λπ. Οι τιμές κάθε φύλλου είναι:
| φύλλο | τιμή | φύλλο | τιμή |
|---|---|---|---|
| ace | 11 | eight | 8 |
| two | 2 | nine | 9 |
| three | 3 | ten | 10 |
| four | 4 | jack | 10 |
| five | 5 | queen | 10 |
| six | 6 | king | 10 |
| seven | 7 | other | 0 |
Σημείωση: Συνήθως, οι άσσοι μπορούν να πάρουν την τιμή 1 ή 11, αλλά για απλότητα θα υποθέσουμε ότι μπορούν να πάρουν μόνο την τιμή 11.
Ανάλογα με τα δύο φύλλα σου και το φύλλο του ντίλερ, υπάρχει μια στρατηγική για τον πρώτο γύρο του παιχνιδιού, στην οποία έχεις τις εξής επιλογές:
Αν και δεν είναι ακόμα βέλτιστη, θα ακολουθήσεις τη στρατηγική που έχει αναπτύξει ο φίλος σου ο Alex, η οποία έχει ως εξής:
Υλοποίησε μια συνάρτηση για να υπολογίζεις την αριθμητική τιμή ενός φύλλου:
value := ParseCard("ace")
fmt.Println(value)
// Output: 11
Γράψε μια συνάρτηση που υλοποιεί τη λογική απόφασης όπως περιγράφηκε παραπάνω:
func FirstTurn(card1, card2, dealerCard string) string
Ακολουθούν μερικά παραδείγματα για τα αναμενόμενα αποτελέσματα:
FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 35 έννοιες167 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.