Menu
CoddyTech

Eingebettete Structs

Teil des Abschnitts Grundlagen der GO-Journey von Coddy. Lektion 99 von 109.

In Go kannst du eine Struktur in eine andere einbetten und so Kompositionsbeziehungen schaffen. Das ist Gos Ansatz zur Vererbung.

Definiere zwei Strukturen, wobei eine in die andere eingebettet ist:

type Address struct {
    city  string
    state string
}

type Person struct {
    name string
    age  int
    Address  // eingebettete Struktur (ohne Feldnamen)
}

func main() {
    person := Person{
        name: "Alice",
        age: 30,
        Address: Address{city: "Portland", state: "Oregon"},
    }
    
    // Direkt auf Felder zugreifen
    fmt.Println(person.city)  // Auf eingebettetes Feld zugreifen
}

Die Ausgabe zeigt, dass wir direkt auf die Felder der eingebetteten Struct zugreifen können:

Portland
challenge icon

Aufgabe

Anfänger

In dieser Herausforderung übst du, eingebettete Structs (Komposition) in Go zu verwenden.

Wir haben zwei Structs: Address und Person. Das Struct Person soll das Struct Address einbetten, damit eine Person direkt auf die Adressfelder zugreifen kann.

Deine Aufgabe ist es, die Definition des Structs Person so zu vervollständigen, dass das Struct Address eingebettet wird. Die Ausgabeanweisungen in main lesen die Adressfelder bereits direkt aus der Person (person.Street, person.City, person.ZipCode); sie werden kompiliert, sobald Address eingebettet ist.

Probier es selbst

package main

import "fmt"

// Das Address-Struct enthält Standortinformationen
type Address struct {
	Street  string
	City    string
	ZipCode string
}

// Das Person-Struct sollte das Address-Struct einbetten
type Person struct {
	Name string
	Age  int
	// TODO: Das Address-Struct hier einbetten (nur eine Zeile)
}

func main() {
	// Eine neue Person mit Adressinformationen erstellen
	person := Person{
		Name: "Alice",
		Age:  30,
		Address: Address{
			Street:  "123 Main St",
			City:    "Wonderland",
			ZipCode: "12345",
		},
	}

	// Informationen zur Person einschließlich der Adresse ausgeben
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	
	// Die Adressfelder direkt aus der Person-Instanz ausgeben
	fmt.Println("Street:", person.Street)
	fmt.Println("City:", person.City)
	fmt.Println("ZipCode:", person.ZipCode)
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Go-Compiler