理解 Go 中的反射:檢索函數名稱
在 Go 的反射系統中,檢索函數名稱並不那麼簡單似乎。在某些情況下,預期的行為是在呼叫 Name 方法時取得空字串。
意外的空字串:
當使用以下程式碼片段時,Name方法傳回一個空字串:
在此在範例中,我們嘗試使用反射檢索主函數的名稱。然而,輸出顯示為“Name of function:”,表示空名稱。
使用runtime.FuncForPC的解決方案:
解決此問題的關鍵在於利用runtime.FuncForPC 函數。該函數傳回一個指向 Func 類型的指針,該指針提供了有關該函數的附加信息,包括其名稱。
現在,結果將是“main.main”,它準確地反映了函數的名稱功能。如果您只想提取函數名稱而不提取套件名稱,可以使用 strings.SplitN 函數拆分字串。
以上是如何使用Go反射取得函數名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!