Menu
CoddyTech

Struct Bersarang

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GO di Coddy. Pelajaran 16 dari 107.

struct bertingkat adalah struct yang berisi struct bernama lain sebagai salah satu field-nya. Ini memungkinkan kamu memodelkan data yang kompleks dan hierarkis dengan menyusun tipe yang lebih kecil dan dapat digunakan kembali.

type Address struct {
    Street string
    City   string
    ZIP    string
}

type Person struct {
    Name    string
    Age     int
    Address Address  // struct bersarang
}

Untuk mengakses field dalam struct bertingkat, rangkai nama field dengan titik.

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

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

Penumpukan mendukung penggunaan ulang kode. Tipe Address dapat digunakan di beberapa struct seperti Person, Company, atau Order tanpa menduplikasi field. Pendekatan ini mencerminkan hubungan di dunia nyata, ketika entitas berisi entitas lain.

type Company struct {
    Name      string
    Employees int
    Address   Address  // tipe Address yang sama digunakan kembali
}

Kamu dapat menyusun struct secara bertingkat hingga beberapa level, tetapi hierarki yang dangkal meningkatkan keterbacaan. Struct bersarang merupakan hal mendasar untuk membangun model data berorientasi objek di Go.

challenge icon

Tantangan

Mudah

Mari kita buat sistem manajemen karyawan yang menunjukkan bagaimana struct bertingkat membantu memodelkan hierarki di dunia nyata. Kamu akan membuat struktur tempat karyawan menjadi bagian dari departemen, dan departemen memiliki informasi lokasi.

Kamu akan menyusun kodemu dalam dua file:

  • models.go: Definisikan tiga struct yang bekerja sama:
    • Location dengan field Building (string) dan Floor (int)
    • Department dengan Name (string) dan field Location bertingkat
    • Employee dengan ID (int), Name (string), dan field Department bertingkat
  • main.go: Baca informasi karyawan dari input, buat Employee dengan struct bertingkat yang tepat, lalu tampilkan profil karyawan lengkap dengan mengakses field melalui struktur bertingkat.

Input berikut akan diberikan:

  • Baris 1: ID karyawan (bilangan bulat)
  • Baris 2: Nama karyawan
  • Baris 3: Nama departemen
  • Baris 4: Nama gedung
  • Baris 5: Nomor lantai (bilangan bulat)

Format output:

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

Contohnya, jika inputnya adalah 101, Alice, Engineering, Tower, dan 5, outputmu seharusnya:

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

Akses field bertingkat menggunakan notasi titik untuk menelusuri hierarki struct (misalnya, employee.Department.Location.Building).

Coba sendiri

package main

import "fmt"

func main() {
	// Baca informasi karyawan
	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: Buat Employee dengan struct bersarang yang tepat
	// Gunakan struct Location, Department, dan Employee dari models.go
	// Inisialisasi semua field bersarang dengan nilai input

	// TODO: Tampilkan profil karyawan dengan format berikut:
	// Employee: [Name] (ID: [ID])
	// Department: [DepartmentName]
	// Location: [Building], Floor [Floor]
	// Akses field bersarang menggunakan notasi titik (misalnya, employee.Department.Location.Building)
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Go online