Pendekatan Go untuk mewakili perhubungan hierarki antara struktur, yang dicontohkan oleh pelaksanaan AST pengkompil Go , berkisar menggunakan antara muka dengan kaedah kosong. Ini menimbulkan persoalan sama ada kaedah ini benar-benar idiomatik dan mudah.
Kaedah Kosong untuk Pelaksanaan Antara Muka
Antara muka Go ialah set tandatangan kaedah. Dengan menambahkan kaedah kosong pada antara muka, niat untuk melaksanakan antara muka itu dinyatakan dengan jelas. Ini amat berguna untuk jenis yang tidak melaksanakan antara muka secara tersirat kerana mempunyai set kaedah yang serasi.
Menguatkuasakan Perbezaan Jenis Berbeza
Kaedah kosong memainkan peranan penting dalam membezakan jenis dalam hierarki. Contohnya, jika Tak Alih dan Alih berkongsi set kaedah yang sama, objek satu jenis boleh ditugaskan kepada pembolehubah jenis lain, melanggar perbezaan yang dimaksudkan. Dengan menambahkan kaedah kosong yang berbeza pada setiap antara muka, tugasan ini dihalang.
Mengurangkan Kaedah Kosong dengan struct Terbenam
Walaupun kaedah kosong boleh memenuhi tujuannya, ia juga boleh membawa kepada percambahan kaedah sedemikian. Untuk menangani ini, adalah mungkin untuk menentukan pelaksanaan struct tersuai dan membenamkannya dalam satu sama lain. Ini membolehkan kaedah pelaksanaan induk "diwarisi", mengurangkan keperluan untuk kaedah kosong.
Contoh Pelaksanaan
Menggunakan hierarki contoh, kami mencipta pelaksanaan struct untuk setiap jenis:
<br>taip ObjectImpl struct {}</p> <p>func (o *ObjectImpl) object() {}</p> <p>type ImmovableImpl struct {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">ObjectImpl
}
func (o *Immovable ) tak alih() {}
jenis Struktur bangunan {
ImmovableImpl
}
Di sini, Bangunan secara automatik menjadi objek Tak Alih kerana ia membenamkan struktur Impl Tak Alih.
Kesimpulan
Penggunaan kaedah kosong dalam AST Go hierarki adalah perkara konvensyen, tetapi ia berfungsi untuk menekankan keperluan untuk pelaksanaan antara muka yang eksplisit dan perbezaan jenis. Walaupun struct terbenam boleh mengurangkan bilangan kaedah kosong, pilihan pendekatan bergantung pada keperluan khusus dan keutamaan pembangun.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Mencipta Hierarki Struktur Kompleks dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!