Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menapis sepotong fungsi Go berdasarkan jenis input dan pulangannya menggunakan pantulan?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-31 18:35:17833semak imbas

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!

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