In Go kann man Zahlen mit den folgenden relationalen und Gleichheitsoperatoren vergleichen.
| Vergleich | Operator |
|---|---|
| gleich | == |
| ungleich | != |
| kleiner | < |
| kleiner oder gleich | <= |
| größer | > |
| größer oder gleich | >= |
Das Ergebnis des Vergleichs ist immer ein boolescher Wert, also entweder true oder false.
a := 3
a != 4 // true
a > 5 // false
Die oben genannten Vergleichsoperatoren kann man auch verwenden, um Strings zu vergleichen. In diesem Fall wird eine lexikografische (Wörterbuch-)Reihenfolge angewendet. Zum Beispiel:
"apple" < "banana" // true
"apple" > "banana" // false
Bedingte Anweisungen in Go ähneln bedingten Anweisungen in anderen Sprachen.
Der zugrunde liegende Typ jeder bedingten Operation ist der Typ bool, der die Werte true oder false annehmen kann.
Bedingte Anweisungen werden oft zur Steuerung des Programmflusses verwendet, um verschiedene Bedingungen zu prüfen.
Um einen bestimmten Fall zu prüfen, kann man eine if-Anweisung verwenden, die ihren Code ausführt, wenn die zugrunde liegende Bedingung true ist, wie folgt:
var value string
if value == "val" {
return "was val"
}
In Szenarien mit mehr als einem Fall können viele if-Anweisungen mit else if- und else-Anweisungen verkettet werden.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
if-Anweisungen können auch eine kurze Initialisierungsanweisung enthalten, mit der man eine oder mehrere Variablen für die if-Anweisung initialisieren kann.
Zum Beispiel:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
Hinweis: Alle Variablen, die in der Initialisierungsanweisung erstellt werden, sind nach dem Ende der
if-Anweisung außerhalb des Gültigkeitsbereichs.
In dieser Übung schreibst du etwas Code, der dir bei der Vorbereitung auf den Kauf eines Fahrzeugs hilft.
Du hast drei Aufgaben: eine, um festzustellen, ob du einen Führerschein brauchst, eine, die dir bei der Wahl zwischen zwei Fahrzeugen hilft, und eine, um den akzeptablen Preis für ein gebrauchtes Fahrzeug zu schätzen.
Manche Fahrzeugarten darfst du nur mit einem Führerschein fahren.
Geh davon aus, dass nur die Arten "car" und "truck" einen Führerschein erfordern. Alles andere darfst du ohne Führerschein fahren.
Implementiere die Funktion NeedsLicense(kind), die die Fahrzeugart entgegennimmt und einen booleschen Wert zurückgibt, der angibt, ob du für diese Fahrzeugart einen Führerschein brauchst.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Du vergleichst deine Optionen an verfügbaren Fahrzeugen.
Du schaffst es, die Auswahl auf zwei Optionen einzugrenzen, aber bei der endgültigen Entscheidung brauchst du Hilfe.
Dafür implementierst du die Funktion ChooseVehicle(option1, option2), die zwei Fahrzeuge als Argumente entgegennimmt und eine Entscheidung zurückgibt, die die Option enthält, die in lexikografischer Reihenfolge zuerst kommt.
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."
Jetzt, wo du dich entschieden hast, willst du sicherstellen, dass du beim Händler einen fairen Preis bekommst. Da du ein gebrauchtes Fahrzeug kaufen möchtest, hängt der Preis davon ab, wie alt das Fahrzeug ist. Für eine grobe Schätzung geh davon aus, dass das Fahrzeug 80 % des ursprünglichen Preises kostet, wenn es weniger als 3 Jahre alt ist. Ist es mindestens 10 Jahre alt, kostet es 50 %. Ist das Fahrzeug mindestens 3 Jahre alt, aber weniger als 10 Jahre, kostet es 70 % des ursprünglichen Preises.
Implementiere die Funktion CalculateResellPrice(originalPrice, age), die diese Logik mit if, else if und else umsetzt (es gibt auch andere Wege, wenn du üben möchtest).
Sie nimmt den ursprünglichen Preis und das Alter des Fahrzeugs als Argumente entgegen und gibt den geschätzten Preis beim Händler zurück.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
Hinweis: Der Rückgabewert ist ein float64.
Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.