Menu
CoddyTech

Gömülü Struct'lar

Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası. Ders 99 / 109.

Go, bir struct'ı başka bir struct'ın içine gömerek bileşim ilişkileri oluşturmanıza olanak tanır. Go'nun kalıtıma yaklaşımı budur.

Biri diğerinin içine gömülü olacak şekilde iki struct tanımlayın:

type Address struct {
    city  string
    state string
}

type Person struct {
    name string
    age  int
    Address  // gömülü struct (alan adı yok)
}

func main() {
    person := Person{
        name: "Alice",
        age: 30,
        Address: Address{city: "Portland", state: "Oregon"},
    }
    
    // Alanlara doğrudan eriş
    fmt.Println(person.city)  // Gömülü alana eriş
}

Çıktı, gömülü yapının alanlarına doğrudan erişebildiğimizi gösteriyor:

Portland
challenge icon

Görev

Başlangıç

Bu meydan okumada, Go'da gömülü struct'ları (bileşim) kullanma alıştırması yapacaksın.

İki struct'ımız var: Address ve Person. Bir kişinin adres alanlarına doğrudan erişebilmesi için Person struct'ı, Address struct'ını gömmelidir.

Görevin, Address struct'ını gömecek şekilde Person struct tanımını tamamlamak. main içindeki print ifadeleri adres alanlarını zaten doğrudan kişiden okuyor (person.Street, person.City, person.ZipCode); Address gömüldüğünde derlenirler.

Kendin dene

package main

import "fmt"

// Address struct'ı konum bilgilerini içerir
type Address struct {
	Street  string
	City    string
	ZipCode string
}

// Person struct'ı Address struct'ını gömmelidir
type Person struct {
	Name string
	Age  int
	// TODO: Address struct'ını buraya göm (yalnızca bir satır)
}

func main() {
	// Adres bilgileriyle yeni bir kişi oluştur
	person := Person{
		Name: "Alice",
		Age:  30,
		Address: Address{
			Street:  "123 Main St",
			City:    "Wonderland",
			ZipCode: "12345",
		},
	}

	// Adres dahil kişi bilgilerini yazdır
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	
	// Adres alanlarını doğrudan person örneğinden yazdır
	fmt.Println("Street:", person.Street)
	fmt.Println("City:", person.City)
	fmt.Println("ZipCode:", person.ZipCode)
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi