Pointer auf Structs
Teil des Abschnitts Grundlagen der GO-Journey von Coddy — Lektion 97 von 109.
Beim Arbeiten mit Strukturen können Sie Zeiger auf diese erstellen, genau wie bei anderen Typen. Dies ist nützlich, um große Strukturen effizient zu übergeben.
Definiere ein Person-Struct und erstelle einen Pointer darauf:
type Person struct {
name string
age int
}
func main() {
person := Person{name: "Alice", age: 30}
// Erstelle einen Pointer auf das Struct
personPtr := &person
// Greife über den Pointer auf die Felder zu
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
}Die Ausgabe zeigt, dass wir über den Zeiger auf Felder zugreifen können:
Alice
30Sie können Felder auch über den Zeiger ändern:
personPtr.age = 31
fmt.Println(person.age) // Gibt aus: 31Aufgabe
AnfängerIn dieser Herausforderung wirst du den Umgang mit Pointern auf Structs in Go üben. Du hast ein Person-Struct mit den Feldern name und age. Deine Aufgabe ist es, die Informationen der Person mithilfe eines Pointers auf das Struct zu aktualisieren.
Der Code erstellt bereits ein Person-Struct und einen Pointer darauf. Du musst die Informationen der Person über den Pointer ändern.
Spickzettel
Erstellen Sie Pointer auf Structs mit dem &-Operator:
type Person struct {
name string
age int
}
person := Person{name: "Alice", age: 30}
personPtr := &personGreifen Sie über Pointer auf Struct-Felder zu und ändern Sie diese:
// Zugriff auf Felder
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
// Felder ändern
personPtr.age = 31Probier es selbst
package main
import "fmt"
// Person-Struktur mit den Feldern Name und Alter
type Person struct {
name string
age int
}
func main() {
// Erstelle eine Person-Struktur
person := Person{
name: "John",
age: 25,
}
// Erstelle einen Zeiger auf die Person-Struktur
personPtr := &person
// Gib die ursprünglichen Informationen der Person aus
fmt.Println("Original person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
// TODO: Verwende den Zeiger, um den Namen der Person in "Jane" und das Alter in 30 zu ändern
// Hinweis: Du kannst auf Strukturfelder über einen Zeiger mit der Punktnotation zugreifen
// Gib die aktualisierten Informationen der Person aus
fmt.Println("Updated person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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