リフレクションは Go の値から変数の名前を取得できますか?

Barbara Streisand
リリース: 2024-11-26 11:45:11
オリジナル
962 人が閲覧しました

Can Reflection Retrieve a Variable's Name from Its Value in Go?

値から変数の名前を取得できますか?

質問: テンプレート システムのコンテキストで、変数の名前を取得するにはどうすればよいですか?リフレクションを使用してその値のみに基づいて名前を付けますか?これにより、テンプレート内のプレースホルダー値を実際の変数名に置き換えることができます。

リフレクションの使用:

リフレクションを使用して変数名を取得しようとしましたが、失敗しました。私が試したコードは次のとおりです。

onevar := "something"
other := "something else"

var msg string
sa := []string{onevar, other}
for _, v := range sa {
    vName := reflect.TypeOf(v).Name()  // Attempt to get the variable name
    vName = fmt.Sprintf("{{%s}}", vName)  // Prefix the name with "{{" and "}}"
    msg = strings.Replace(msg, vName, v, -1)  // Replace the placeholder with the actual value
}
ログイン後にコピー

スライス sa には変数名ではなく変数値のみが含まれるため、このアプローチでは望ましい結果が得られません。

Answer:

このシナリオでは変数名の取得にリフレクションを使用できません。スライス sa には、変数名そのものではなく、変数の値が含まれます。プレースホルダーを変数名に置き換えるという目的を達成するには、スライスの代わりにマップを利用することをお勧めします。マップは変数名をその値に関連付けることができるため、効率的かつ正確な置換が可能になります。

以上がリフレクションは Go の値から変数の名前を取得できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート