Menu
CoddyTech

Struct Tertanam

Termasuk bagian Dasar-Dasar dalam perjalanan GO di Coddy. Pelajaran 99 dari 109.

Go memungkinkan kamu menyematkan satu struct di dalam struct lain, sehingga membentuk hubungan komposisi. Inilah pendekatan Go terhadap pewarisan.

Definisikan dua struct, dengan satu struct disematkan di dalam struct lainnya:

type Address struct {
    city  string
    state string
}

type Person struct {
    name string
    age  int
    Address  // struct yang disematkan (tanpa nama field)
}

func main() {
    person := Person{
        name: "Alice",
        age: 30,
        Address: Address{city: "Portland", state: "Oregon"},
    }
    
    // Akses field secara langsung
    fmt.Println(person.city)  // Akses field yang disematkan
}

Output menunjukkan bahwa kita bisa mengakses bidang struct yang disematkan secara langsung:

Portland
challenge icon

Tantangan

Pemula

Dalam tantangan ini, kamu akan berlatih menggunakan struct tertanam (komposisi) di Go.

Kita memiliki dua struct: Address dan Person. Struct Person harus menyematkan struct Address agar seseorang dapat mengakses field alamat secara langsung.

Tugasmu adalah melengkapi definisi struct Person agar menyematkan struct Address. Pernyataan print di main sudah membaca field alamat secara langsung dari orang tersebut (person.Street, person.City, person.ZipCode); semuanya akan berhasil dikompilasi setelah Address disematkan.

Coba sendiri

package main

import "fmt"

// Struct Address berisi informasi lokasi
type Address struct {
	Street  string
	City    string
	ZipCode string
}

// Struct Person harus menyematkan struct Address
type Person struct {
	Name string
	Age  int
	// TODO: Sematkan struct Address di sini (cukup satu baris)
}

func main() {
	// Buat person baru dengan informasi alamat
	person := Person{
		Name: "Alice",
		Age:  30,
		Address: Address{
			Street:  "123 Main St",
			City:    "Wonderland",
			ZipCode: "12345",
		},
	}

	// Cetak informasi person, termasuk alamatnya
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	
	// Cetak field alamat langsung dari instance person
	fmt.Println("Street:", person.Street)
	fmt.Println("City:", person.City)
	fmt.Println("ZipCode:", person.ZipCode)
}
quiz iconUji dirimu

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

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Go online