Rückblick – Dynamische Listen
Teil des Abschnitts Grundlagen der GO-Journey von Coddy. Lektion 83 von 109.
Aufgabe
MittelÜben wir den Umgang mit Slices in Go, indem wir einen einfachen Einkaufslisten-Manager erstellen!
Deine Aufgabe ist es, mehrere Funktionen zu implementieren, die eine Einkaufsliste bearbeiten:
addItems: Füge der Einkaufsliste neue Artikel hinzuremoveItem: Entferne einen Artikel anhand seines Index aus der ListefindExpensiveItems: Finde Artikel, deren Preise über einem Schwellenwert liegencalculateTotalCost: Berechne die Gesamtkosten aller Artikel
Jeder Artikel in der Einkaufsliste wird durch einen String (Name) und einen float64 (Preis) dargestellt. Die Funktion main demonstriert, wie all diese Operationen zusammenarbeiten.
Probier es selbst
package main
import "fmt"
// addItems fügt der Einkaufsliste neue Artikel und deren Preise hinzu
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
// Dein Code hier
return names, prices
}
// removeItem entfernt einen Artikel am angegebenen Index
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
// Dein Code hier
return names, prices
}
// findExpensiveItems gibt Artikel zurück, deren Preise über dem Schwellenwert liegen
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
// Dein Code hier
return nil
}
// calculateTotalCost gibt die Summe aller Preise zurück
func calculateTotalCost(prices []float64) float64 {
// Dein Code hier
return 0
}
func main() {
// Leere Einkaufslisten initialisieren
names := []string{}
prices := []float64{}
// Erste Artikel hinzufügen
initialNames := []string{"Apples", "Milk", "Bread"}
initialPrices := []float64{2.99, 3.49, 2.29}
names, prices = addItems(names, prices, initialNames, initialPrices)
// Die ursprüngliche Einkaufsliste ausgeben
fmt.Println("Initial Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
// Gesamtkosten berechnen und ausgeben
total := calculateTotalCost(prices)
fmt.Printf("\nTotal Cost: $%.2f\n", total)
// Teure Artikel finden und ausgeben
priceThreshold := 3.00
expensiveItems := findExpensiveItems(names, prices, priceThreshold)
fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
for _, item := range expensiveItems {
fmt.Println(item)
}
// Einen neuen Artikel hinzufügen
names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
// Einen Artikel entfernen
names, prices = removeItem(names, prices, 1)
fmt.Println("\nRemoved item at index 1")
// Gib die endgültige Einkaufsliste aus
fmt.Println("\nFinal Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
}Alle Lektionen in Grundlagen
4Vergleichs- und logische Operatoren
Vergleichsoperatoren – Teil 1Vergleichsoperatoren – Teil 2Logischer UND-OperatorLogischer ODER-OperatorLogischer NICHT-OperatorGrundlagen der OperatorrangfolgeZusammenfassung – Vergleiche durchführen7Kontrollfluss: Schleifen
Die `for`-Schleife erklärt`for`-Schleife – Grundlagen`for`-Schleife – nur BedingungDas Schlüsselwort `break`Das Schlüsselwort `continue`Verschachtelte SchleifenWiederholung – Aktionen wiederholen2Variablen und grundlegende Datentypen
Was ist eine VariableTypinferenz mit `:=`Ganzzahlen (int)GleitkommazahlenBoolesche WerteZeichenkettenNullwerteKonstantenNamenskonventionenRückblick – Variablen und Typen5Grundlegende Ein- und Ausgabe
Formatierte AusgabeFormatierungsverbenDatentypen ausgebenGrundlegende Benutzereingaben erhaltenRückblick – Ein- und Ausgabe8Funktionen
Funktionen verstehenEine Funktion deklarierenFunktionen aufrufenFunktionsparameterEinen einzelnen Wert zurückgebenMehrere Werte zurückgebenBenannte RückgabewerteGrundlagen des FunktionsumfangsRückblick – Wiederverwendbaren Code erstellen11Zusammengesetzte Datentypen: Slices
Einführung in SlicesSlice-Literale deklarierenSlices mit `make` erstellenSlice-Länge vs. KapazitätAuf Slice-Elemente zugreifenElemente anhängenVorhandene Slices/Arrays aufteilenÜber Slices iterierenSlices kopierenRückblick – Dynamische Listen3Grundlegende Operatoren
Arithmetische OperatorenDivisionsoperatorDer Modulo-OperatorZuweisungsoperatorErweiterte ZuweisungsoperatorenInkrement und DekrementRückblick – Berechnungen6Kontrollfluss: Bedingungen
Die `if`-AnweisungDas `else`-SchlüsselwortDas `else if`-SchlüsselwortVariablen-Shadowing in `if`Variablen initialisierenDie `switch`-AnweisungSwitch mit AusdrückenSwitch ohne AusdruckDas `fallthrough`-SchlüsselwortZusammenfassung – Entscheidungen treffen9Zeiger
Was ist ein Zeiger?Zeigervariablen deklarierenDer AdressoperatorZeiger dereferenzierenZeiger in Funktionen verwendenNil-ZeigerRückblick – Zeiger verstehen12Zusammengesetzte Datentypen: Maps
Einführung in MapsMap-Literale deklarierenMaps mit `make` erstellenSchlüssel-Wert-Paare hinzufügen und aktualisierenAuf Map-Werte zugreifenDas Vorhandensein eines Schlüssels prüfenMap-Einträge löschenLänge von MapsMaps durchlaufenZusammenfassung – Schlüssel-Wert-SpeicherungÜbe selbstständig: Online-Go-Compiler