Heim > Backend-Entwicklung > Golang > Wie kann ich mithilfe von Reflection für die Vorlagenerstellung Variablennamen aus dem Quellcode abrufen?

Wie kann ich mithilfe von Reflection für die Vorlagenerstellung Variablennamen aus dem Quellcode abrufen?

DDD
Freigeben: 2024-12-03 17:35:11
Original
966 Leute haben es durchsucht

How Can I Retrieve Variable Names from Source Code Using Reflection for Templating?

Abruf von Variablennamen mithilfe von Reflection

Bei dem Versuch, ein benutzerfreundliches Vorlagensystem zu erstellen, stellt sich die Frage: Wie kann der Variablenname so erhalten werden, wie er in erscheint den Quellcode mithilfe von Reflektion?

Das Ziel besteht darin, ein Segment von Variablen (Strings) zu erstellen und es zu durchlaufen und dabei das Markup zu ersetzen {{}} Platzhalter mit tatsächlichen Variablenwerten. Wenn der Variablenname beispielsweise onevar lautet, sollte das System die Vorlage nach {{onevar}} durchsuchen und sie durch den Wert der Variablen ersetzen.

Bei dieser Aufgabe geht es darum, die Natur der Reflexion beim Umgang mit Variablen zu verstehen. Im bereitgestellten Codeausschnitt:

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

var msg string
sa := []string{onevar, other}
for _, v := range sa {
    vName := reflect.TypeOf(v).Name()
    vName = fmt.Sprintf("{{%s}}", vName)
    msg = strings.Replace(msg, vName, v, -1)
}
Nach dem Login kopieren

Der Code versucht, den Variablennamen mithilfe von Reflektion abzurufen:

vName := reflect.TypeOf(v).Name()
Nach dem Login kopieren

Dieser Ansatz ist jedoch erfolglos, da ein Slice Werte und keine Variablen enthält . Daher erweist es sich als unmöglich, den Variablennamen aus einem Slice zu erhalten.

Lösung:
Um dieses Problem zu beheben, sollten Sie die Verwendung einer Karte anstelle eines Slice in Betracht ziehen, da Karten Schlüssel (Variablennamen) verknüpfen ) mit Werten:

vars := map[string]string{
    "onevar": "something",
    "other": "something else",
}

var msg string
for name, value := range vars {
    vName := fmt.Sprintf("{{%s}}", name)
    msg = strings.Replace(msg, vName, value, -1)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection für die Vorlagenerstellung Variablennamen aus dem Quellcode abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage