Konsep pewarisan dalam bahasa berorientasikan objek seperti C membolehkan penciptaan hierarki jenis kompleks. Walau bagaimanapun, Go, bahasa yang tidak mempunyai kelas dan warisan, menimbulkan cabaran unik apabila ia datang untuk mewakili struktur hierarki.
Dalam pengkompil Go, a hierarki jenis diwakili menggunakan antara muka dengan kaedah kosong. Walaupun Soalan Lazim Go mencadangkan pendekatan ini untuk menjamin pelaksanaan antara muka secara eksplisit, ia boleh membawa kepada bilangan kaedah kosong yang berlebihan.
Go menyokong pembenaman kedua-dua struct dan antara muka. Kaedah kosong diperkenalkan untuk memastikan bahawa jenis melaksanakan antara muka secara eksplisit, dengan itu menghalang ketidakserasian penetapan jenis.
Pendekatan alternatif ialah mencipta pelaksanaan struktur yang membenamkan jenis peringkat lebih tinggi . Ini membenarkan pewarisan automatik set kaedah, mengurangkan keperluan untuk kaedah kosong.
Sebagai contoh, pertimbangkan hierarki:
Object --Immovable ----Building ----Mountain --Movable ----Car ----Bike
Antara muka dan pelaksanaan Objek:
type Object interface { object() } type ObjectImpl struct {} func (o *ObjectImpl) object() {}
Antara muka Tak alih dan pelaksanaan:
type Immovable interface { Object immovable() } type ImmovableImpl struct { ObjectImpl // Embedded } func (i *ImmovableImpl) immovable() {}
Bangunan struct:
type Building struct { ImmovableImpl // Embedded }
Dengan membenamkan struct ImmovableImpl, Building secara automatik mewarisi kaedah tak alih() tanpa memerlukan kaedah kosong tambahan. Teknik ini meminimumkan bilangan kaedah kosong yang diperlukan, terutamanya apabila hierarki berkembang atau antara muka mengandungi lebih daripada satu kaedah.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mencipta Hierarki Struktur yang Kompleks dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!