Come altri linguaggi, anche Go mette a disposizione un'istruzione switch.
Le istruzioni switch sono un modo più breve per scrivere lunghe istruzioni if ... else if.
Per creare uno switch, iniziamo usando la parola chiave switch seguita da un valore o da un'espressione.
Poi dichiariamo ciascuna delle condizioni con la parola chiave case.
Possiamo anche dichiarare un caso default, che verrà eseguito quando nessuna delle condizioni case precedenti è stata soddisfatta:
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
}
Una cosa interessante delle istruzioni switch è che il valore dopo la parola chiave switch può essere omesso, e per ogni case possiamo avere condizioni booleane:
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
}
In questo esercizio simuleremo il primo turno di una partita a Blackjack.
Riceverai due carte e potrai vedere la carta scoperta del banco. Tutte le carte sono rappresentate da una stringa come "ace", "king", "three", "two", ecc. I valori di ciascuna carta sono:
| card | value | card | value |
|---|---|---|---|
| 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 |
Nota: di solito gli ace possono valere 1 o 11, ma per semplicità assumeremo che possano valere solo 11.
A seconda delle tue due carte e della carta del banco, esiste una strategia per il primo turno di gioco, in cui hai le seguenti opzioni:
Anche se non è ancora ottimale, seguirai la strategia che il tuo amico Alex sta sviluppando, che è la seguente:
Implementa una funzione per calcolare il valore numerico di una carta:
value := ParseCard("ace")
fmt.Println(value)
// Output: 11
Scrivi una funzione che implementi la logica decisionale descritta sopra:
func FirstTurn(card1, card2, dealerCard string) string
Ecco alcuni esempi dei risultati attesi:
FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
Iscriviti a Exercism per imparare e padroneggiare Go con 35 concetti167 esercizi e il mentoring di persone reali, tutto gratis.