Embedding Interface
Gabungkan interface
Embedding Interface adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Antarmuka
Antarmuka dapat menyematkan antarmuka lain, menggabungkan kumpulan metode mereka menjadi kontrak yang lebih besar. Pustaka standar menggunakannya di mana-mana.
Sintaks Penyematan
Cantumkan tipe antarmuka di dalam antarmuka lain untuk menyertakan semua metodenya.
package main
import "fmt"
type Reader interface{ Read() string }
type Writer interface{ Write(s string) }
type ReadWriter interface {
Reader
Writer
}
func main() {
var rw ReadWriter
fmt.Println(rw == nil)
}io.ReadWriter dalam Praktik
Contoh klasiknya adalah io.ReadWriter, yang didefinisikan sebagai penyematan io.Reader dan io.Writer. Tipe apa pun yang memiliki kedua metode tersebut memenuhinya.
Memenuhi Antarmuka Gabungan
Tipe konkret mengimplementasikan antarmuka gabungan cukup dengan memiliki semua metode yang diperlukan.
package main
import "fmt"
type Reader interface{ Read() string }
type Writer interface{ Write(s string) }
type ReadWriter interface {
Reader
Writer
}
type File struct{ data string }
func (f *File) Read() string { return f.data }
func (f *File) Write(s string) { f.data = s }
func main() {
var rw ReadWriter = &File{}
rw.Write("hi")
fmt.Println(rw.Read())
}Mengapa Menyusun Antarmuka
Antarmuka kecil mudah diimplementasikan dan diuji. Dengan menyusunnya, Anda dapat membangun kontrak yang lebih besar hanya saat diperlukan, sehingga setiap bagian tetap minimal.
Membangun dari Bagian Kecil
Definisikan antarmuka satu-metode yang terfokus, lalu gabungkan.
package main
import "fmt"
type Opener interface{ Open() }
type Closer interface{ Close() }
type OpenCloser interface {
Opener
Closer
}
type Door struct{}
func (Door) Open() { fmt.Println("opened") }
func (Door) Close() { fmt.Println("closed") }
func main() {
var oc OpenCloser = Door{}
oc.Open()
oc.Close()
}Tidak Ada Metode Duplikat
Antarmuka yang disematkan tidak boleh menyumbangkan metode yang tumpang tindih dengan tanda tangan yang bertentangan; kumpulan metode yang identik tetap diperbolehkan dalam Go modern.
Menerima Antarmuka yang Sempit
Fungsi seharusnya meminta antarmuka terkecil yang dibutuhkannya. Terimalah io.Reader, bukan io.ReadWriteCloser, jika Anda hanya membaca.
package main
import "fmt"
type Reader interface{ Read() string }
func dump(r Reader) { fmt.Println(r.Read()) }
type Buf struct{}
func (Buf) Read() string { return "data" }
func main() {
dump(Buf{})
}Keluarga io
Pustaka standar menyusun Reader, Writer, dan Closer menjadi ReadCloser, WriteCloser, dan ReadWriteCloser—susunan kontrak yang rapi.
Antarmuka Gabungan dalam API
Kembalikan antarmuka terluas yang didukung suatu nilai, tetapi terimalah antarmuka tersempit yang digunakan fungsi Anda. Dengan begitu, fleksibilitas dan kejelasan dapat dimaksimalkan.
Penyematan Antarmuka vs Struct
- Penyematan struct mempromosikan field dan metode untuk menggunakan kembali perilaku
- Penyematan antarmuka menggabungkan persyaratan metode menjadi kontrak yang lebih besar
Pemeriksaan Singkat
Ujilah pengetahuan Anda tentang penyematan antarmuka.
Ringkasan
Anda telah mempelajari penyematan antarmuka.
- Cantumkan antarmuka di dalam antarmuka lain untuk menggabungkan kumpulan metode
- Paket io menyusun Reader/Writer/Closer
- Jaga agar antarmuka dasar tetap kecil; susun saat diperlukan
- Terimalah antarmuka tersempit yang diperlukan fungsi
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Embedding Interface” gratis?
Ya — teks lengkap “Embedding Interface” 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 Interface”?
Gabungkan interface 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 2 dari 4.
Berapa lama pelajaran “Embedding Interface” 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