Menu
Coddy logo textTech

İç İçe Geçmiş Struct'lar

Coddy'nin GO Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 16 / 107.

İç içe struct, alanlarından biri olarak adlandırılmış başka bir struct içeren bir struct'tır. Bu, daha küçük ve yeniden kullanılabilir türleri bir araya getirerek karmaşık, hiyerarşik verileri modellemenizi sağlar.

type Address struct {
    Street string
    City   string
    ZIP    string
}

type Person struct {
    Name    string
    Age     int
    Address Address  // iç içe struct
}

İç içe geçmiş bir struct içindeki alanlara erişmek için alan adlarını noktalarla zincirlersin.

p := Person{
    Name: "Alice",
    Age:  30,
    Address: Address{
        Street: "123 Main St",
        City:   "Boston",
        ZIP:    "02101",
    },
}

fmt.Println(p.Address.City) // Boston

İç içe yerleştirme, kodun yeniden kullanılmasını teşvik eder. Address türü, alanları yinelemeden Person, Company veya Order gibi birden çok yapıda kullanılabilir. Bu yaklaşım, varlıkların başka varlıkları içerdiği gerçek dünyadaki ilişkileri yansıtır.

type Company struct {
    Name      string
    Employees int
    Address   Address  // aynı Address türü tekrar kullanıldı
}

Yapıları birden çok seviyede iç içe yerleştirebilirsiniz; ancak hiyerarşileri sığ tutmak okunabilirliği artırır. İç içe yapılar, Go'da nesne yönelimli veri modelleri oluşturmanın temelini oluşturur.

challenge icon

Görev

Kolay

İç içe yapıların gerçek dünya hiyerarşilerini modellemeye nasıl yardımcı olduğunu gösteren bir çalışan yönetim sistemi oluşturalım. Çalışanların departmanlara bağlı olduğu ve departmanların konum bilgilerine sahip olduğu bir yapı oluşturacaksınız.

Kodunuzu iki dosyaya ayıracaksınız:

  • models.go: Birlikte çalışan üç yapı tanımlayın:
    • Location; Building (string) ve Floor (int) alanlarıyla
    • Department; Name (string) ve iç içe bir Location alanıyla
    • Employee; ID (int), Name (string) ve iç içe bir Department alanıyla
  • main.go: Girdiden çalışan bilgilerini okuyun, uygun şekilde iç içe yapılarla bir Employee oluşturun ve iç içe yapı üzerinden alanlara erişerek çalışanın eksiksiz profilini görüntüleyin.

Aşağıdaki girdiler sağlanacaktır:

  • 1. satır: Çalışan kimliği (tam sayı)
  • 2. satır: Çalışanın adı
  • 3. satır: Departman adı
  • 4. satır: Bina adı
  • 5. satır: Kat numarası (tam sayı)

Çıktı biçimi:

Employee: [Name] (ID: [ID])
Department: [DepartmentName]
Location: [Building], Floor [Floor]

Örneğin 101, Alice Chen, Engineering, Tower A ve 5 verildiğinde çıktınız şöyle olmalıdır:

Employee: Alice Chen (ID: 101)
Department: Engineering
Location: Tower A, Floor 5

Yapı hiyerarşisinde ilerlemek için iç içe alanlara nokta gösterimini kullanarak erişin (örneğin, employee.Department.Location.Building).

Kendin dene

package main

import "fmt"

func main() {
	// Çalışan bilgilerini oku
	var id int
	var name string
	var deptName string
	var building string
	var floor int

	fmt.Scanln(&id)
	fmt.Scanln(&name)
	fmt.Scanln(&deptName)
	fmt.Scanln(&building)
	fmt.Scanln(&floor)

	// TODO: Uygun şekilde iç içe geçmiş struct'lar ile bir Employee oluşturun
	// models.go dosyasındaki Location, Department ve Employee struct'larını kullanın
	// Tüm iç içe geçmiş alanları girdi değerleriyle başlatın

	// TODO: Çalışan profilini şu formatı kullanarak yazdırın:
	// Employee: [Name] (ID: [ID])
	// Department: [DepartmentName]
	// Location: [Building], Floor [Floor]
	// İç içe geçmiş alanlara nokta notasyonu kullanarak erişin (örneğin, employee.Department.Location.Building)
}
quiz iconKendini test et

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

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi