Embedding Struct
Gabungkan struct
Embedding Struct adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Menyusun Struct
Go tidak memiliki pewarisan kelas. Sebagai gantinya, Go menyediakan penyematan: tempatkan satu struct di dalam struct lain tanpa nama field untuk menggunakan kembali field dan metodenya.
Field Anonim
Field yang disematkan dideklarasikan hanya dengan tipe, tanpa nama. Anggotanya dipromosikan ke struct luar.
package main
import "fmt"
type Engine struct{ Power int }
type Car struct {
Engine
Brand string
}
func main() {
c := Car{Engine: Engine{Power: 150}, Brand: "Coddy"}
fmt.Println(c.Power, c.Brand)
}Mengakses Field yang Dipromosikan
Anda dapat membaca c.Power secara langsung meskipun Power dimiliki oleh Engine yang disematkan. Itulah promosi field.
Jalur Lengkap Tetap Berfungsi
Anda selalu dapat mengakses struct yang disematkan secara eksplisit melalui nama tipenya.
package main
import "fmt"
type Engine struct{ Power int }
type Car struct{ Engine }
func main() {
c := Car{Engine{200}}
fmt.Println(c.Engine.Power)
fmt.Println(c.Power)
}Penyematan vs Field Bernama
Field bernama (engine Engine) memerlukan c.engine.Power. Penyematan (Engine) mempromosikan anggota sehingga Anda menulis c.Power. Penyematan menyatakan hubungan merupakan sejenis.
Menginisialisasi Struct yang Disematkan
Gunakan nama tipe sebagai kunci field dalam literal komposit.
package main
import "fmt"
type Address struct{ City string }
type User struct {
Address
Name string
}
func main() {
u := User{Address: Address{City: "Istanbul"}, Name: "Mert"}
fmt.Println(u.Name, "in", u.City)
}Beberapa Penyematan
Sebuah struct dapat menyematkan beberapa tipe dan mencampurkan field-fieldnya.
package main
import "fmt"
type Timestamps struct{ Created string }
type Author struct{ Name string }
type Post struct {
Timestamps
Author
Title string
}
func main() {
p := Post{Timestamps{"today"}, Author{"Ada"}, "Hello"}
fmt.Println(p.Title, p.Name, p.Created)
}Benturan Nama
Jika dua tipe yang disematkan memiliki nama field yang sama, referensi yang ambigu menyebabkan galat kompilasi—Anda harus menyertakan nama tipe untuk membedakannya.
Pembayangan oleh Struct Luar
Field yang dideklarasikan pada struct luar membayangi field yang dipromosikan dengan nama sama. Field luar akan digunakan untuk akses tanpa kualifikasi.
package main
import "fmt"
type Base struct{ ID int }
type Item struct {
Base
ID int
}
func main() {
i := Item{Base{1}, 99}
fmt.Println(i.ID, i.Base.ID)
}Penyematan Pointer
Anda dapat menyematkan tipe pointer. Anggotanya tetap dipromosikan, tetapi Anda harus menginisialisasi pointer tersebut agar tidak berisiko mengalami dereferensi nil.
package main
import "fmt"
type Logger struct{ Prefix string }
type Service struct{ *Logger }
func main() {
s := Service{Logger: &Logger{Prefix: "[svc]"}}
fmt.Println(s.Prefix)
}Kapan Menggunakan Penyematan
- Menggunakan kembali field umum (stempel waktu, ID)
- Membangun tipe yang lebih kaya dari tipe yang lebih kecil
- Menghindari penyarangan yang dalam dan jalur akses yang panjang
Pemeriksaan Singkat
Ujilah pengetahuan Anda tentang penyematan struct.
Ringkasan
Anda telah mempelajari penyematan struct.
- Field anonim mempromosikan anggota ke struct luar
- Akses melalui
c.Poweratauc.Engine.Power - Field luar membayangi field yang dipromosikan
- Benturan memerlukan kualifikasi eksplisit
- Penyematan pointer juga berfungsi
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Embedding Struct” gratis?
Ya — teks lengkap “Embedding Struct” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Embedding Struct”?
Gabungkan struct Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Embedding Struct” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Embedding Struct
- Embedding Interface
- Promosi Method
- Komposisi, Bukan Pewarisan