Golang: Mengimbas Struktur dengan Pelaksanaan Khusus
Dalam Go, memanipulasi berbilang struktur dengan antara muka dikongsi boleh menimbulkan cabaran. Walaupun mungkin untuk mengendalikan setiap contoh struktur secara individu, anda mungkin menghadapi keperluan untuk mencari dan memanipulasi semua struktur secara automatik yang mematuhi antara muka tertentu.
Masalahnya
Senario melibatkan pelaksanaan antara muka I oleh pelbagai struktur (A, B, dan C). Semasa aplikasi dimulakan, anda perlu menggunakan kaedah mula() untuk setiap contoh A, B dan C. Begitu juga, selepas penamatan, anda perlu memanggil kaedah stop() pada keadaan ini. Walau bagaimanapun, anda ingin mengelakkan pengekodan keras struktur khusus ini dalam kod anda, membenarkan pengubahsuaian yang lancar apabila struktur baharu yang melaksanakan antara muka I diperkenalkan.
Jawapannya
Malangnya, dalam Go, pendekatan yang anda bayangkan tidak dapat dilaksanakan. Go ialah bahasa yang ditaip secara statik, dan pemaut menghapuskan definisi dan kaedah jenis yang tidak digunakan. Oleh itu, jenis yang tidak dirujuk secara eksplisit dalam kod anda akan ditinggalkan.
Penyelesaian Alternatif
Pendekatan alternatif ialah mencipta peta global (atau kepingan) yang menyimpan contoh setiap struktur yang melaksanakan antara muka I. Kejadian ini boleh didaftarkan semasa pemulaan menggunakan fungsi init:
<code class="go">var instMap = map[string]StartStopper type A struct {} func init() { instMap["A"] = new(A) }</code>
Semasa permulaan, anda boleh lelaran di atas peta dan memanggil kaedah Mula() pada setiap tika.
Mengendalikan Berbilang Kejadian
Jika terdapat berbilang tika bagi setiap jenis struktur, anda perlu mengubah suai proses pendaftaran anda untuk menambah tika pada peta apabila ia dibuat. Anda juga harus mengalih keluar kejadian apabila ia tidak lagi digunakan untuk mengelakkan kemungkinan kebocoran memori.
Atas ialah kandungan terperinci Bagaimana Mengimbas dan Memanipulasi Struktur Secara Dinamik Melaksanakan Antara Muka Khusus di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!