ネストされたテンプレート内の外部スコープへのアクセス
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 サイトの他の関連記事を参照してください。