」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Go 中使用反射檢索函數名稱?

如何在 Go 中使用反射檢索函數名稱?

發佈於2024-11-10
瀏覽:794

How to Retrieve a Function's Name Using Reflection in Go?

使用反射檢索函數名稱

在 Go 中,反射提供了在運行時檢查和操作程序結構的機制。存取函數的名稱就是這樣的用例之一。但是,嘗試直接從其類型取得名稱可能會導致空字串。

預期行為

使用reflect.TypeOf(function)檢索函數的名稱。 Name() 傳回一個空字串,因為它指向類型本身,該類型不包含函數的name.

解決方案

要檢索函數的名稱,我們需使用runtime.FuncForPC。此函數取得指向函數反射值的指標並傳回指向 *Func 結構的指標。在此*Func 上呼叫Name 方法會產生預期的函數名稱:

name := runtime.FuncForPC(reflect.ValueOf(function).Pointer()).Name()

This方法傳回包和函數名稱,例如“包.功能”。如果需要,可以透過標記字串來提取包名稱。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3