Heim >Backend-Entwicklung >Golang >Kann Reflection den Namen einer Variablen aus ihrem Wert in Go 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!