Go 中的參數名稱擷取
考慮以下 Go方法:
func (t *T) TMethod(data *testData) (interface{}, *error) { ... }
如果您想確定參數的名稱(即資料),嘗試使用以下程式碼將導致檢索結構name:
reflect.ValueOf(T).MethodByName("TMethod").Type.In(0).Elem().Name()
遺憾的是,取得函數或方法參數的名稱在Go 中是不可行的。這主要是因為呼叫此類函數時參數名稱無關緊要。相反,重點在於它們的類型和順序。此外,允許定義函數或方法而不為其參數分配名稱,如下所示:
func NamelessParams(int, string) {}
有關這方面的更多詳細信息,請參閱關於未命名參數的討論Go?
或者,如果您的目標是建立一個框架,允許將值傳遞給具有指定名稱的參數(例如,將 API 參數對應到 Go 函數/方法參數),請考慮使用結構體或對應。這是因為結構體和映射允許分別透過 Value.FieldByName() 和 Type.FieldByName() 等方法檢索命名欄位和鍵。
以上是如何取得Go函數的參數名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!