Zusammenfassung – 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- & logische Operatoren
Vergleichsoperatoren - Teil 1Vergleichsoperatoren - Teil 2Logischer UND-OperatorLogischer ODER-OperatorLogischer NICHT-OperatorGrundlagen der OperatorrangfolgeZusammenfassung - Vergleiche anstellen7Kontrollfluss: Schleifen
Die `for`-Schleife erklärtfor-Schleife - Grundlagenfor-Schleife - Nur BedingungDas `break`-SchlüsselwortDas `continue`-SchlüsselwortVerschachtelte SchleifenZusammenfassung - Aktionen wiederholen2Variablen und grundlegende Datentypen
Was ist eine VariableTypinferenz mit `:=`Ganzzahlen (int)GleitkommazahlenBoolesche WerteStringsZero ValuesKonstantenNamenskonventionenZusammenfassung - Variablen und Typen5Grundlagen der Ein- und Ausgabe
Formatierte AusgabeFormat-VerbenTypen ausgebenEinfache Benutzereingaben erhaltenZusammenfassung – Ein- und Ausgabe8Funktionen
Funktionen verstehenEine Funktion deklarierenFunktionen aufrufenFunktionsparameterEinen einzelnen Wert zurückgebenMehrere Werte zurückgebenBenannte RückgabewerteGrundlagen des Funktions-ScopesZusammenfassung – Wiederverwendbaren Code erstellen11Zusammengesetzte Typen: Slices
Einführung in SlicesDeklaration von Slice-LiteralenSlices mit `make` erstellenSlice-Länge vs. KapazitätZugriff auf Slice-ElementeElemente anhängenSlicing von bestehenden Slices/ArraysIterieren über SlicesKopieren von SlicesZusammenfassung – Dynamische Listen3Grundlegende Operatoren
Arithmetische OperatorenDivisionsoperatorDer Modulo-OperatorZuweisungsoperatorKombinierte ZuweisungsoperatorenInkrement und DekrementZusammenfassung - Berechnungen6Kontrollfluss: Bedingte Anweisungen
Die `if`-AnweisungDas `else`-SchlüsselwortDas `else if`-SchlüsselwortVariable Shadowing in `if`Variablen initialisierenDie `switch`-AnweisungSwitch mit AusdrückenSwitch ohne AusdruckDas `fallthrough`-SchlüsselwortZusammenfassung – Entscheidungen treffen9Zeiger
Was ist ein Zeiger?Deklarieren von ZeigervariablenDer AdressoperatorDereferenzieren von ZeigernVerwendung von Zeigern in FunktionenNil-ZeigerZusammenfassung – Zeiger verstehen12Zusammengesetzte Typen: Maps
Einführung in MapsDeklarieren von Map-LiteralenErstellen von Maps mit `make`Hinzufügen und Aktualisieren von Key-Value-PaarenZugriff auf Map-WerteÜberprüfen der Existenz von SchlüsselnLöschen von Map-EinträgenMap-LängeIterieren über MapsZusammenfassung – Key-Value-Speicher