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 yerleştirerek bileşim ilişkileri oluşturmanıza olanak tanır. Bu, Go'nun kalıtıma yaklaşımıdır.

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 pratiği 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ömmek için Person struct tanımını tamamlamaktır. main içindeki yazdırma ifadeleri adres alanlarını zaten doğrudan kişiden (person.Street, person.City, person.ZipCode) okuyor; 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 person oluştur
	person := Person{
		Name: "Alice",
		Age:  30,
		Address: Address{
			Street:  "123 Main St",
			City:    "Wonderland",
			ZipCode: "12345",
		},
	}

	// Adres dahil person 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