Memilih Fungsi daripada Senarai dalam Go
Dalam Go, adalah mungkin untuk membuat senarai fungsi menggunakan kepingan atau tatasusunan. Walau bagaimanapun, memilih fungsi berdasarkan kriteria tertentu, seperti jenis pemulangan atau jenis parameter, memerlukan penggunaan pantulan.
Untuk menentukan sama ada fungsi mengambil hujah integer atau mengembalikan integer, kita boleh menggunakan pakej reflect untuk memeriksa tandatangan jenisnya. Berikut ialah contoh kod yang menunjukkan cara untuk mencapai ini:
<code class="go">package main import ( "fmt" "reflect" ) func main() { funcs := make([]interface{}, 3, 3) // Use interface{} for any function type funcs[0] = func(a int) int { return a + 1 } // Accepts an int, returns an int funcs[1] = func(a string) int { return len(a) } // Accepts a string, returns an int funcs[2] = func(a string) string { return ":(" } // Accepts a string, returns a string for _, fi := range funcs { f := reflect.ValueOf(fi) functype := f.Type() hasIntParam := false hasIntReturn := false // Check function parameters for int type for i := 0; i < functype.NumIn(); i++ { if "int" == functype.In(i).String() { hasIntParam = true break } } // Check function return value for int type for i := 0; i < functype.NumOut(); i++ { if "int" == functype.Out(i).String() { hasIntReturn = true break } } // Print the function if it has integer parameter or return type if hasIntParam || hasIntReturn { fmt.Println(f) } } }</code>
Dengan menggunakan refleksi, kita boleh introspeksi fungsi dalam senarai dan mencetak secara terpilih fungsi yang memenuhi kriteria yang ditetapkan. Kod ini menerangkan sendiri dan menyediakan demonstrasi yang jelas tentang cara menangani masalah ini dalam Go.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Fungsi daripada Senarai Berdasarkan Parameter dan Jenis Pulangan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!