Promosi Method
Warisi method melalui embedding
Promosi Method adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Mewarisi Metode melalui Penyematan
Ketika Anda menyematkan suatu tipe, metodenya juga dipromosikan. Tipe luar dapat memanggilnya seolah-olah tipe tersebut mendefinisikannya sendiri—versi pewarisan khas Go.
Metode yang Dipromosikan
Car menyematkan Engine dan memperoleh metode Start secara cuma-cuma.
package main
import "fmt"
type Engine struct{}
func (Engine) Start() { fmt.Println("engine started") }
type Car struct{ Engine }
func main() {
c := Car{}
c.Start()
}Metode Beroperasi pada Nilai yang Disematkan
Metode yang dipromosikan berjalan pada field yang disematkan, bukan pada struct luar. Metode tersebut tidak dapat melihat field lain milik struct luar.
package main
import "fmt"
type Counter struct{ n int }
func (c *Counter) Inc() { c.n++ }
func (c Counter) Get() int { return c.n }
type Widget struct{ Counter }
func main() {
w := Widget{}
w.Inc()
w.Inc()
fmt.Println(w.Get())
}Mengganti Metode
Definisikan metode dengan nama yang sama pada struct luar untuk mengganti metode yang dipromosikan. Metode luar memiliki prioritas.
package main
import "fmt"
type Animal struct{}
func (Animal) Speak() string { return "..." }
type Dog struct{ Animal }
func (Dog) Speak() string { return "Woof" }
func main() {
fmt.Println(Dog{}.Speak())
}Memanggil Versi yang Disematkan
Bahkan setelah mengganti metode, Anda tetap dapat mengakses versi asli melalui nama tipe yang disematkan.
package main
import "fmt"
type Animal struct{}
func (Animal) Speak() string { return "generic" }
type Dog struct{ Animal }
func (d Dog) Speak() string { return "Woof + " + d.Animal.Speak() }
func main() {
fmt.Println(Dog{}.Speak())
}Promosi dan Antarmuka
Karena metode yang dipromosikan menjadi bagian dari kumpulan metode tipe luar, tipe luar dapat memenuhi antarmuka menggunakan metode dari tipe yang disematkan.
package main
import "fmt"
type Stringer interface{ String() string }
type Base struct{ name string }
func (b Base) String() string { return b.name }
type Wrapper struct{ Base }
func main() {
var s Stringer = Wrapper{Base{"hi"}}
fmt.Println(s.String())
}Kumpulan Metode Pointer vs Nilai
Jika tipe yang disematkan memiliki metode dengan penerima pointer, hanya pointer ke struct luar (atau nilai yang alamatnya dapat diambil) yang memperoleh metode tersebut dalam kumpulan metodenya.
Penyematan untuk Perilaku Bawaan
Sematkan tipe yang menyediakan metode bawaan yang masuk akal, lalu ganti hanya beberapa metode yang perlu Anda sesuaikan—pola penggunaan ulang yang sangat kuat.
package main
import "fmt"
type DefaultHandler struct{}
func (DefaultHandler) Handle() string { return "default" }
type CustomHandler struct{ DefaultHandler }
func (CustomHandler) Handle() string { return "custom" }
func main() {
fmt.Println(CustomHandler{}.Handle())
}Tidak Ada Polimorfisme Sejati
Tidak seperti OOP klasik, metode yang disematkan tidak memanggil kembali penggantian pada struct luar. Go tidak memiliki pemilihan metode virtual secara dinamis melalui penyematan.
Promosi melalui Beberapa Tingkat
Metode dipromosikan secara transitif: jika A menyematkan B dan B menyematkan C, A juga memperoleh metode C, selama tidak ada ambiguitas.
Kapan Promosi Membantu
- Menggunakan kembali perilaku tanpa menulis ulang
- Menyediakan perilaku bawaan yang dapat Anda ganti
- Memenuhi antarmuka melalui metode yang disematkan
Pemeriksaan Singkat
Ujilah pengetahuan Anda tentang promosi metode.
Ringkasan
Anda telah mempelajari promosi metode.
- Metode yang disematkan dipromosikan ke tipe luar
- Metode luar menggantikan metode yang dipromosikan
- Akses versi asli melalui nama tipe yang disematkan
- Promosi membantu memenuhi antarmuka, tetapi tidak ada pemilihan metode virtual secara dinamis
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Promosi Method” gratis?
Ya — teks lengkap “Promosi Method” 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 “Promosi Method”?
Warisi method melalui embedding 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 3 dari 4.
Berapa lama pelajaran “Promosi Method” 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.