首頁 > 後端開發 > Golang > Go 可以透過程式設計方式檢索函數名稱嗎?

Go 可以透過程式設計方式檢索函數名稱嗎?

Mary-Kate Olsen
發布: 2024-12-24 10:02:55
原創
922 人瀏覽過

Can Go Programmatically Retrieve a Function's Name?

在 Go 中擷取函數名稱

問題:

是否可以以程式設計方式在 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))
}
登入後複製

說明:

  • 說明:
  • 說明:
  • reflect.ValueOf(i).Pointer()檢索函數 i 的記憶體位址。

runtime.FuncForPC 取得指標並傳回一個runtime.Func value。

runtime.Func.Name() 傳回與runtime.Func 值相關的函數的名稱。 透過呼叫 GetFunctionName(foo),您將獲得字串「foo」作為結果。

以上是Go 可以透過程式設計方式檢索函數名稱嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板