Bagaimanakah saya boleh menapis sepotong fungsi Go berdasarkan jenis input dan pulangannya menggunakan pantulan?

Patricia Arquette
Lepaskan: 2024-10-31 18:35:17
asal
847 orang telah melayarinya

How can I filter a slice of Go functions based on their input and return types using reflection?

Memilih Fungsi dengan Jenis atau Input Pulangan Yang Diingini dalam Golang

Andaikan anda mempunyai senarai arbitrari fungsi yang disimpan dalam kepingan atau tatasusunan. Bagaimanakah anda boleh menapis fungsi ini dengan berkesan untuk memasukkan hanya fungsi yang mematuhi kriteria tertentu, seperti fungsi mengembalikan integer atau mengambil integer sebagai input?

Masukkan alam pantulan di Golang, alat yang berkuasa untuk introspeksi dan memanipulasi struktur program semasa runtime. Menggunakan pakej mencerminkan, kami boleh memeriksa secara dinamik jenis dan tandatangan fungsi untuk melaksanakan pemilihan yang diingini.

Untuk menunjukkan, pertimbangkan senario berikut: kami ingin mencetak fungsi daripada senarai yang sama ada menerima integer sebagai input atau kembalikan integer. Begini cara kami mendekati tugasan ini:

  1. Buat Sekeping Fungsi:
    Mulakan dengan mentakrifkan kepingan bernama "funcs" untuk menyimpan fungsi sewenang-wenangnya. Setiap fungsi diwakili menggunakan jenis antara muka{} untuk menampung sebarang jenis fungsi.
  2. Isi Slice:
    Isi kepingan "funcs" dengan fungsi. Contoh termasuk tiga fungsi: satu mengembalikan integer dan menerima integer, satu mengembalikan integer dan menerima rentetan dan satu mengembalikan rentetan dan menerima rentetan.
  3. Lelaran Lebih Fungsi:
    Gunakan gelung berasaskan julat untuk mengulangi setiap fungsi dalam kepingan "funcs".
  4. Ekstrak Metadata Fungsi:
    Untuk setiap fungsi, kami menggunakan reflect.ValueOf to mendapatkan objek Nilai yang sepadan. Objek ini menyediakan akses kepada Jenisnya dan metadata lain.
  5. Periksa Tandatangan Fungsi:
    Periksa jenis fungsi (functype) dan periksa kedua-dua parameter input dan outputnya.
  6. Semak Jenis Yang Diingini:
    Lelaran pada parameter input dan output fungsi (NumIn dan NumOut) dan semak sama ada ia sepadan dengan syarat yang ditentukan. Sebagai contoh, kami menyemak sama ada rentetan jenis ialah "int" untuk parameter input dan parameter output.
  7. Cetak Fungsi Terpilih:
    Jika fungsi memenuhi kriteria yang dikehendaki, cetak ke output menggunakan fmt.Println.

Dengan mengikuti langkah ini, anda boleh memilih fungsi dengan berkesan daripada senarai berdasarkan jenis pemulangan atau parameter inputnya. Kod ini membantu anda mengenal pasti dan menggunakan fungsi yang memenuhi keperluan khusus, meningkatkan fleksibiliti dan penyesuaian program anda.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menapis sepotong fungsi Go berdasarkan jenis input dan pulangannya menggunakan pantulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!