Heim >Backend-Entwicklung >Golang >Wie kann ich in Go auf den äußeren Bereich innerhalb verschachtelter Vorlagen zugreifen?

Wie kann ich in Go auf den äußeren Bereich innerhalb verschachtelter Vorlagen zugreifen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 11:38:02741Durchsuche

How can I Access the Outer Scope within Nested Templates in Go?

Zugriff auf den äußeren Bereich innerhalb verschachtelter Vorlagen

Wenn Sie mit verschachtelten Vorlagen in Go arbeiten, können Sie innerhalb eines „mit“ oder „auf den äußeren Bereich zugreifen“ Bereich“ kann aufgrund des geänderten Gültigkeitsbereichs der Punktvariable (.) eine Herausforderung darstellen. Um dies zu beheben, kann die spezielle Variable $ verwendet werden, um auf den aufrufenden Bereich zuzugreifen.

Betrachten Sie das folgende Beispiel:

type MyData struct {
  OuterValue string
  InnerValue string
}

func main() {
  data := MyData{OuterValue: "Outer Value", InnerValue: "Inner Value"}
  template.Must(template.New("example").Parse("{{with .Inner}} Outer: {{$.OuterValue}}, Inner: {{.InnerValue}} {{end}}")).Execute(writer, data)
}

In diesem Beispiel ändert der „with“-Bereich den Bereich von die Punktvariable (.), um auf den „Inner“-Wert der MyData-Struktur zu verweisen. Wir müssen jedoch immer noch aus dem „with“-Bereich auf den „OuterValue“ zugreifen.

Um dies zu erreichen, verwenden wir die Variable $. $ stellt das Datenargument dar, das während der Ausführung an die Vorlage übergeben wird und mit dem Startwert der Punktvariable (.) identisch ist. Durch die Verwendung von $ können wir innerhalb des verschachtelten „with“- oder „range“-Bereichs auf den aufrufenden Bereich zugreifen.

Der folgende Code demonstriert die Verwendung von $:

$ is documented in the text/template docs:

> When execution begins, $ is set to the data argument passed to Execute, that is, to the starting value of dot.

Das obige ist der detaillierte Inhalt vonWie kann ich in Go auf den äußeren Bereich innerhalb verschachtelter Vorlagen zugreifen?. 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