Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh memilih fungsi secara pemrograman dalam Go berdasarkan pulangan atau jenis parameternya menggunakan pakej reflect?
Memilih Fungsi Berdasarkan Pulangan atau Jenis Parameter dalam Go
Dalam Go, adalah mungkin untuk memilih fungsi secara pemrograman berdasarkan pulangan atau parameternya jenis. Ini berguna apabila anda mempunyai koleksi fungsi dan perlu menapis hanya fungsi yang memenuhi kriteria tertentu.
Pustaka standard Go menyediakan pakej reflect, yang membolehkan anda memanipulasi dan memeriksa jenis. Untuk memilih fungsi berdasarkan jenisnya, anda boleh menggunakan langkah berikut:
Berikut ialah contoh yang menunjukkan cara memilih fungsi yang mengambil int sebagai parameter atau kembalikan int:
<code class="go">package main import ( "fmt" "reflect" ) func main() { funcs := make([]interface{}, 3, 3) // Using interface{} to allow any kind of function funcs[0] = func(a int) int { return a + 1 } // Good: takes int, returns int funcs[1] = func(a string) int { return len(a) } // Good: returns int funcs[2] = func(a string) string { return ":(" } // Bad: returns string for _, fi := range funcs { f := reflect.ValueOf(fi) functype := f.Type() good := false for i := 0; i < functype.NumIn(); i++ { if functype.In(i).String() == "int" { good = true // Yes, there is an int input break } } for i := 0; i < functype.NumOut(); i++ { if functype.Out(i).String() == "int" { good = true // Yes, there is an int output break } } if good { fmt.Println(f) } } }</code>
Kod ini mempamerkan penggunaan reflect untuk memeriksa jenis fungsi dan menapis keluar fungsi yang memenuhi kriteria yang dikehendaki. Ia menunjukkan cara memilih fungsi yang mengambil int sebagai input atau mengembalikan int sebagai output.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memilih fungsi secara pemrograman dalam Go berdasarkan pulangan atau jenis parameternya menggunakan pakej reflect?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!