Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menemui Contoh Secara Dinamik Melaksanakan Antara Muka Go pada Masa Jalan?

Bagaimana untuk Menemui Contoh Secara Dinamik Melaksanakan Antara Muka Go pada Masa Jalan?

Susan Sarandon
Susan Sarandonasal
2024-10-29 05:51:31419semak imbas

 How to Dynamically Discover Instances Implementing a Go Interface at Runtime?

Golang: Menemui Contoh Melaksanakan Antara Muka

Di Golang, selalunya wajar untuk melaksanakan operasi pada contoh jenis tertentu atau yang melaksanakan antara muka tertentu. Walau bagaimanapun, penaipan bahasa yang ketat memberikan cabaran dalam mengenal pasti semua keadaan yang memenuhi kriteria tertentu semasa masa jalan.

Tinjauan Keseluruhan Masalah

Pertimbangkan kes penggunaan berikut:

  • Antara Muka Saya mentakrifkan dua kaedah: mula() dan berhenti().
  • Berbilang struct (A, B dan C) melaksanakan antara muka I.
  • Semasa program permulaan, start() hendaklah digunakan pada semua kejadian A, B dan C.
  • Begitu juga, semasa penamatan program, stop() harus dipanggil pada kejadian ini.
  • Untuk memudahkan penemuan dinamik, adalah lebih baik untuk tidak mengekod keras nama struct dalam kod.

Perbincangan Penyelesaian

Sistem jenis Golang tidak membenarkan pengambilan masa jalan semua jenis yang melaksanakan antara muka. Ini kerana Go ditaip secara statik, dan pengkompil menghapuskan jenis dan kaedah yang tidak digunakan untuk mengoptimumkan binari yang terhasil.

Pendekatan Alternatif

Penyelesaian alternatif adalah untuk mengekalkan global peta atau kepingan yang mengaitkan pengecam dengan keadaan yang melaksanakan antara muka. Setiap struct boleh memulakan dirinya sendiri dengan menambahkan contoh pada koleksi global ini.

Contohnya:

<code class="go">var instMap = map[string]StartStopper

type A struct {}

func init() {
    instMap["A"] = new(A)
}</code>

Semasa permulaan dan penamatan, program boleh berulang ke atas koleksi global dan menggunakan kaedah yang sesuai pada setiap tika.

Sambungan untuk Berbilang Kejadian

Jika berbilang tika setiap jenis boleh wujud, koleksi global mesti dikemas kini apabila tika baharu dibuat dan dialih keluar apabila ia tidak lagi digunakan. Ini memastikan pengendalian yang betul oleh pemungut sampah.

Atas ialah kandungan terperinci Bagaimana untuk Menemui Contoh Secara Dinamik Melaksanakan Antara Muka Go pada Masa Jalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn