Heim >Backend-Entwicklung >Golang >Kann Reflection den Namen einer Variablen aus ihrem Wert in Go abrufen?

Kann Reflection den Namen einer Variablen aus ihrem Wert in Go abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-26 11:45:111040Durchsuche

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

Kann ich den Namen einer Variablen aus ihrem Wert abrufen?

Frage: Wie kann ich im Kontext eines Vorlagensystems den Namen einer Variablen erhalten? Namen allein auf der Grundlage seines Wertes mithilfe von Reflexion? Dies würde es mir ermöglichen, Platzhalterwerte in einer Vorlage durch die tatsächlichen Variablennamen zu ersetzen.

Verwendung von Reflection:

Ich habe versucht, Reflection zu verwenden, um den Variablennamen abzurufen, aber Ich hatte keinen Erfolg. Hier ist der Code, den ich ausprobiert habe:

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
}

Dieser Ansatz liefert nicht das gewünschte Ergebnis, da die Slice-Sa nur die Variablenwerte enthält, nicht die Variablennamen.

Antwort:

Reflection kann in diesem Szenario nicht zum Abrufen des Variablennamens verwendet werden. Die Slice-Sa enthält die Werte der Variablen, nicht die Variablennamen selbst. Um Ihr Ziel, Platzhalter durch Variablennamen zu ersetzen, zu erreichen, empfiehlt es sich, eine Karte anstelle eines Slice zu verwenden. Eine Karte kann ihren Werten Variablennamen zuordnen, was eine effiziente und genaue Ersetzung ermöglicht.

Das obige ist der detaillierte Inhalt vonKann Reflection den Namen einer Variablen aus ihrem Wert in Go abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn