問題:
是否可以以程式設計方式在 Go 中擷取函數名稱?例如,給定函數 foo(),我們可以使用像 GetFunctionName(foo) 這樣的方法來確定它的名稱嗎?
答案:
是的,可以使用runtime.FuncForPC來取得Go中函數的名稱函數。
解決方案:
這是一個使用的解決方案runtime.FuncForPC:
package main import ( "fmt" "reflect" "runtime" ) func foo() {} func GetFunctionName(i interface{}) string { return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() } func main() { fmt.Println("name:", GetFunctionName(foo)) }
說明:
runtime.FuncForPC 取得指標並傳回一個runtime.Func value。
runtime.Func.Name() 傳回與runtime.Func 值相關的函數的名稱。 透過呼叫 GetFunctionName(foo),您將獲得字串「foo」作為結果。以上是Go 可以透過程式設計方式檢索函數名稱嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!