ホームページ >バックエンド開発 >Golang >Go でリフレクションを使用して関数名を取得する方法

Go でリフレクションを使用して関数名を取得する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-11 13:48:02252ブラウズ

How to Retrieve Function Names Using Reflection in Go?

リフレクションを使用した関数名の取得

Go では、リフレクション システムにより、実行時に型と値のイントロスペクションと操作が可能になります。ただし、その型の Name メソッドを使用して関数の名前を取得すると、空の文字列が返されることがあります。

この問題を解決するには、ランタイム パッケージの FuncForPc 関数を使用します。これは関数値へのポインターを受け取り、*Func オブジェクトを返します。このオブジェクトは、Name メソッドで取得できる関数の名前へのアクセスを提供します。

FuncForPc を使用した例の修正バージョンを次に示します。

package main

import (
    "fmt"
    "reflect"
    "runtime"
)

func main() {
    name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name()
    fmt.Println("Name of function :", name)
}

このコードは、次の出力を出力します。

Name of function : main.main

パッケージ接頭辞のない関数名のみが必要な場合は、名前をトークン化できます。結果。

以上がGo でリフレクションを使用して関数名を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。