Menu
Coddy logo textTech

Eingebettete Structs

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

Go ermöglicht es dir, eine Struktur in eine andere einzubetten und dadurch Kompositionsbeziehungen zu erstellen. Dies ist Gos Ansatz zur Vererbung.

Definieren Sie zwei Structs, wobei eines in das andere eingebettet ist:

type Address struct {
    city  string
    state string
}

type Person struct {
    name string
    age  int
    Address  // eingebettetes Struct (kein Feldname)
}

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

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

Portland
challenge icon

Aufgabe

Anfänger

In dieser Herausforderung übst du die Verwendung eingebetteter Strukturen (Komposition) in Go.

Wir haben zwei Strukturen: Address und Person. Die Struktur Person sollte die Struktur Address einbetten, damit eine Person direkt auf Adressfelder zugreifen kann.

Deine Aufgabe besteht darin, die Definition der Struktur Person so zu vervollständigen, dass sie die Struktur Address einbettet, und anschließend direkt über die Personeninstanz auf die Adressfelder zuzugreifen.

Probier es selbst

package main

import "fmt"

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

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

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

	// Drucke Personeninformationen einschließlich der Adresse
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	
	// TODO: Drucke die Adressfelder direkt von der person Instanz aus
	// (ohne person.Address.Street usw. zu verwenden)
	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