In Go i numeri si possono confrontare usando i seguenti operatori relazionali e di uguaglianza.
| Confronto | Operatore |
|---|---|
| uguale | == |
| non uguale | != |
| minore | < |
| minore o uguale | <= |
| maggiore | > |
| maggiore o uguale | >= |
Il risultato del confronto è sempre un valore booleano, quindi true oppure false.
a := 3
a != 4 // true
a > 5 // false
Gli operatori di confronto visti sopra si possono usare anche per confrontare le stringhe. In quel caso si applica un ordine lessicografico (da dizionario). Per esempio:
"apple" < "banana" // true
"apple" > "banana" // false
Le condizioni in Go sono simili a quelle di altri linguaggi.
Il tipo sottostante di qualsiasi operazione condizionale è il tipo bool, che può avere il valore true o false.
Le condizioni sono spesso usate come meccanismi di controllo del flusso per verificare varie situazioni.
Per verificare un caso particolare si può usare un'istruzione if, che esegue il suo codice se la condizione sottostante è true, in questo modo:
var value string
if value == "val" {
return "was val"
}
Quando i casi sono più di uno, si possono concatenare più istruzioni if usando le istruzioni else if ed else.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
Le istruzioni if possono anche includere una breve istruzione di inizializzazione, che può servire a inizializzare una o più variabili per l'istruzione if.
Per esempio:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
Nota: le variabili create nell'istruzione di inizializzazione escono dallo scope dopo la fine dell'istruzione if.
In questo esercizio scriverai del codice per aiutarti a prepararti all'acquisto di un veicolo.
Hai tre compiti: determinare se ti serve la patente, scegliere tra due veicoli e stimare il prezzo accettabile di un veicolo usato.
Alcuni tipi di veicolo richiedono la patente di guida per essere guidati.
Supponi che solo i tipi "car" e "truck" richiedano la patente: tutto il resto si può guidare senza.
Implementa la funzione NeedsLicense(kind), che prende il tipo di veicolo e restituisce un booleano che indica se per quel tipo di veicolo serve la patente.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Valuti le opzioni di veicoli disponibili.
Riesci a restringerle a due, ma ti serve una mano per prendere la decisione finale.
Per questo, implementa la funzione ChooseVehicle(option1, option2), che prende due veicoli come argomenti e restituisce una decisione che include l'opzione che viene prima in ordine lessicografico.
vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
Ora che hai preso una decisione, vuoi assicurarti di ottenere un prezzo equo dal concessionario. Dato che ti interessa acquistare un veicolo usato, il prezzo dipende da quanto è vecchio il veicolo. Per una stima approssimativa, supponi che se il veicolo ha meno di 3 anni, costi l'80% del prezzo originale che aveva quando era nuovo di zecca. Se ha almeno 10 anni, costa il 50%. Se il veicolo ha almeno 3 anni ma meno di 10, costa il 70% del prezzo originale.
Implementa la funzione CalculateResellPrice(originalPrice, age), che applica questa logica usando if, else if e else (ci sono altri modi, se vuoi esercitarti).
Prende il prezzo originale e l'età del veicolo come argomenti e restituisce il prezzo stimato dal concessionario.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
Nota: il valore restituito è un float64.
Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti165 esercizi e il mentoring di persone reali, tutto gratis.