ホームページ >バックエンド開発 >Golang >Go でネストされたテンプレート内のアウタースコープにアクセスするにはどうすればよいですか?

Go でネストされたテンプレート内のアウタースコープにアクセスするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-15 11:38:02738ブラウズ

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

ネストされたテンプレート内の外部スコープへのアクセス

Go でネストされたテンプレートを操作する場合、「with」または「 range" スコープでは、ドット (.) 変数のスコープが変更されるため、問題が発生する可能性があります。これに対処するには、特殊変数 $ を使用して呼び出し元のスコープにアクセスできます。

次の例を考えてみましょう。

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)
}

この例では、「with」スコープは次のスコープを変更します。 MyData 構造体の「内部」値を参照するドット (.) 変数。ただし、「with」スコープ内から「OuterValue」にアクセスする必要があります。

これを実現するには、$ 変数を使用します。 $ は、実行中にテンプレートに渡されるデータ引数を表します。これは、ドット (.) 変数の開始値と同じです。 $ を使用すると、ネストされた「with」または「range」スコープ内から呼び出しスコープにアクセスできます。

次のコードは、$:

$ 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.
の使用法を示しています。

以上がGo でネストされたテンプレート内のアウタースコープにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。