首頁 > 後端開發 > Golang > 主體

如何使用反射從 Go 介面檢索方法名稱清單?

Barbara Streisand
發布: 2024-10-30 09:15:27
原創
882 人瀏覽過

How do you retrieve a list of method names from an interface in Go using reflection?

從介面取得方法名稱清單

在 Go 中,反射允許在運行時檢查和操作程序的內部結構。這包括存取有關介面類型的資訊的能力,例如其方法名稱。

考慮以下介面:

<code class="go">type FooService interface {
    Foo1(x int) int
    Foo2(x string) string
}</code>
登入後複製

使用以下方法取得此介面的方法名稱清單反射:

  1. 取得介面類型的reflect.Type :
<code class="go">t := reflect.TypeOf((*FooService)(nil)).Elem()</code>
登入後複製

此行檢索特定類型的reflect.Type實作FooService 介面。

  1. 檢索方法的數量:
<code class="go">for i := 0; i < t.NumMethod(); i++ {</code>
登入後複製

NumMethod() 函數傳回下列方法的數量

  1. 取得方法名稱:
<code class="go">s = append(s, t.Method(i).Name)</code>
登入後複製

Method(i) 函數傳回代表該方法的reflect.Method 物件在索引i 處。該物件的 Name 欄位包含方法的名稱。

結果清單將包含方法名稱 ["Foo1", "Foo2"]。

說明:

  • (*FooService)(nil) 語法用於建立指向 FooService 介面的匿名實例的指標。這是獲取介面的reflect.Type所必需的。
  • Elem() 方法傳回實作介面的具體類型的reflect.Type,而不是介面類型本身。
  • NumMethod() 函數傳回介面中宣告的方法數量,即使特定型別實作了其他方法。

以上是如何使用反射從 Go 介面檢索方法名稱清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!