在 Go 中根據回傳或參數類型選擇函數
在 Go 中,可以根據傳回或參數以程式方式選擇函數類型。當您有一組函數並且需要僅過濾掉滿足特定條件的函數時,這會很有用。
Go 標準庫提供了 Reflect 包,它允許您操作和檢查類型。若要根據類型選擇函數,可以使用下列步驟:
這裡有一個範例,示範如何選擇以int 作為參數的函數參數或傳回一個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>
此程式碼展示如何使用Reflect 來檢查函數類型並過濾出滿足所需條件的函數。它示範如何選擇將整數作為輸入或傳回整數作為輸出的函數。
以上是如何使用 Reflect 套件根據返回或參數類型以程式設計方式選擇 Go 中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!