Rückblick – Dynamische Listen
Teil des Abschnitts Grundlagen der GO-Journey von Coddy. Lektion 83 von 109.
Aufgabe
MittelLassen Sie uns die Arbeit mit Slices in Go üben, indem wir einen einfachen Einkaufslisten-Manager erstellen!
Ihre Aufgabe ist es, mehrere Funktionen zu implementieren, die eine Einkaufsliste manipulieren:
addItems: Neue Artikel zur Einkaufsliste hinzufügenremoveItem: Einen Artikel anhand des Index aus der Liste entfernenfindExpensiveItems: Artikel mit Preisen über einem Schwellenwert findencalculateTotalCost: Die Gesamtkosten aller Artikel berechnen
Jeder Artikel in der Einkaufsliste wird durch einen String (Name) und einen float64 (Preis) dargestellt. Die Hauptfunktion demonstriert das Zusammenspiel all dieser Operationen.
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) {
// Ihr Code hier
return names, prices
}
// removeItem entfernt einen Artikel am angegebenen Index
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
// Ihr 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 {
// Ihr Code hier
return nil
}
// calculateTotalCost gibt die Summe aller Preise zurück
func calculateTotalCost(prices []float64) float64 {
// Ihr 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")
// Die endgültige Einkaufsliste ausgeben
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