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:
PortlandTantangan
PemulaDalam 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)
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Perbandingan dan Logika
Operator Perbandingan, Bagian 1Operator Perbandingan, Bagian 2Operator AND LogikaOperator OR LogikaOperator NOT LogikaDasar Prioritas OperatorRingkasan, Membuat Perbandingan7Alur Kontrol: Perulangan
Penjelasan tentang `for` loop`for` loop Dasar`for` loop dengan Kondisi SajaKata Kunci `break`Kata Kunci `continue`Perulangan BersarangRangkuman: Mengulang Tindakan2Variabel dan Tipe Data Dasar
Apa itu variabelInferensi Tipe dengan `:=`Bilangan Bulat (int)Bilangan Floating-PointBooleanstringNilai NolKonstantaKonvensi PenamaanRangkuman: Variabel dan Tipe5Input/Output Dasar
Output TerformatKata Kerja FormatMencetak Tipe DataMendapatkan Input Dasar dari PenggunaRangkuman: Input dan Output8Fungsi
Memahami FungsiMendeklarasikan FungsiMemanggil FungsiParameter FungsiMengembalikan Satu NilaiMengembalikan Beberapa NilaiNilai Kembalian BernamaDasar Cakupan FungsiRangkuman: Membuat Kodemu Dapat Digunakan Kembali3Operator Dasar
Operator AritmetikaOperator PembagianOperator ModuloOperator PenugasanOperator Penugasan GabunganInkrementasi dan DekrementasiRangkuman: Perhitungan6Alur Kontrol: Percabangan
Pernyataan `if`Kata Kunci `else`Kata Kunci `else if`Shadowing Variabel dalam `if`Menginisialisasi VariabelPernyataan `switch``switch` dengan Ekspresi`switch` tanpa EkspresiKata Kunci `fallthrough`Ringkasan: Membuat KeputusanLatihan sendiri: Compiler Go online