Zusammenfassung – Benutzerdefinierte Datenstrukturen
Teil des Abschnitts Grundlagen der GO-Journey von Coddy — Lektion 101 von 109.
Aufgabe
EinfachLassen Sie uns eine einfache benutzerdefinierte Datenstruktur erstellen, um das Gelernte über Structs in Go zu wiederholen.
In dieser Herausforderung erstellen Sie eine grundlegende Counter-Datenstruktur, die Folgendes kann:
- Einen Zählwert verfolgen
- Den Zähler erhöhen
- Den Zähler verringern
- Den Zähler auf Null zurücksetzen
Vervollständigen Sie den Code, indem Sie die fehlenden Methoden für das Counter-Struct implementieren.
Probier es selbst
package main
import (
"fmt"
)
// Counter ist eine einfache Zähler-Datenstruktur
type Counter struct {
value int
name string
}
// NewCounter erstellt einen neuen Zähler mit einem gegebenen Namen
func NewCounter(name string) Counter {
return Counter{
value: 0,
name: name,
}
}
// Increment erhöht den Zähler um 1
func (c *Counter) Increment() {
// Code hinzufügen, um den Wert des Zählers zu erhöhen
}
// Decrement verringert den Zähler um 1 (aber nicht unter 0)
func (c *Counter) Decrement() {
// Code hinzufügen, um den Wert des Zählers zu verringern
// Sicherstellen, dass der Wert nicht unter 0 fällt
}
// Reset setzt den Zähler auf 0 zurück
func (c *Counter) Reset() {
// Code hinzufügen, um den Zähler auf 0 zurückzusetzen
}
// Value gibt den aktuellen Zählerstand zurück
func (c Counter) Value() int {
// Code hinzufügen, um den aktuellen Wert zurückzugeben
return 0 // Diesen Teil ersetzen
}
// String gibt eine String-Repräsentation des Zählers zurück
func (c Counter) String() string {
return fmt.Sprintf("%s: %d", c.name, c.value)
}
func main() {
// Erstelle einen neuen Zähler namens "Visitors"
visitors := NewCounter("Visitors")
// Den Zähler einige Male erhöhen
visitors.Increment()
visitors.Increment()
visitors.Increment()
// Den aktuellen Zählerstand ausgeben
fmt.Println(visitors)
fmt.Println("Current value:", visitors.Value())
// Den Zähler verringern
visitors.Decrement()
fmt.Println(visitors)
// Den Zähler zurücksetzen
visitors.Reset()
fmt.Println(visitors)
// Testen, dass der Zähler nicht unter Null fällt
visitors.Decrement()
fmt.Println(visitors)
}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 wiederholen10Zusammengesetzte Typen: Arrays
Einführung in ArraysDeklarieren von ArraysInitialisieren von ArraysZugriff auf Array-ElementeArray-Länge mit `len`Iterieren über ArraysMehrdimensionale Arrays13Zusammengesetzte Typen: Structs
Benutzerdefinierte Typen definierenStruct-Instanzen erstellenZugriff auf Struct-FelderPointer auf StructsStructs initialisierenEingebettete StructsAnonyme StructsZusammenfassung – Benutzerdefinierte Datenstrukturen2Variablen 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 erstellen3Grundlegende 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