Menu
Coddy logo textTech

Struktury osadzone

Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 99 z 109.

Go pozwala osadzać jedną strukturę w drugiej, tworząc relacje kompozycji. To podejście Go do dziedziczenia.

Zdefiniuj dwie struktury, z których jedna jest osadzona w drugiej:

type Address struct {
    city  string
    state string
}

type Person struct {
    name string
    age  int
    Address  // osadzona struktura (bez nazwy pola)
}

func main() {
    person := Person{
        name: "Alice",
        age: 30,
        Address: Address{city: "Portland", state: "Oregon"},
    }
    
    // Uzyskaj bezpośredni dostęp do pól
    fmt.Println(person.city)  // Uzyskaj dostęp do osadzonego pola
}

Wynik pokazuje, że możemy uzyskać bezpośredni dostęp do pól osadzonej struktury:

Portland
challenge icon

Wyzwanie

Początkujący

W tym wyzwaniu poćwiczysz używanie osadzonych struktur (kompozycji) w Go.

Mamy dwie struktury: Address i Person. Struktura Person powinna osadzać strukturę Address, aby osoba mogła bezpośrednio uzyskiwać dostęp do pól adresu.

Twoim zadaniem jest uzupełnienie definicji struktury Person, aby osadzała strukturę Address, a następnie uzyskanie bezpośredniego dostępu do pól adresu z instancji osoby.

Spróbuj swoich sił

package main

import "fmt"

// Struktura Address zawiera informacje o lokalizacji
type Address struct {
	Street  string
	City    string
	ZipCode string
}

// Struktura Person powinna osadzać strukturę Address
type Person struct {
	Name string
	Age  int
	// TODO: Osadź tutaj strukturę Address (tylko jedna linia)
}

func main() {
	// Utwórz nową osobę z informacjami o adresie
	person := Person{
		Name: "Alice",
		Age:  30,
		Address: Address{
			Street:  "123 Main St",
			City:    "Wonderland",
			ZipCode: "12345",
		},
	}

	// Wypisz informacje o osobie, w tym adres
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	
	// TODO: Wypisz pola adresu bezpośrednio z instancji person
	// (bez używania person.Address.Street itd.)
	fmt.Println("Street:", person.Street)
	fmt.Println("City:", person.City)
	fmt.Println("ZipCode:", person.ZipCode)
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Go online