範囲パイプライン ({{range Pipeline}} T1 {{ text/template パッケージ内の外側のパイプライン値は、範囲アクションの前に、または Execute() に渡される親/グローバル パイプラインとしてアクセスできます。
次の例では、範囲パイプライン内の .Path にアクセスしようとしますが、ドットが Files 要素を反復しているため、.Path は利用できません。
package main import ( "os" "text/template" ) // .Path won't be accessible, because dot will be changed to the Files element const page = `{{range .Files}}<script src="{{html .Path}}/js/{{html .}}"></script>{{end}}` type scriptFiles struct { Path string Files []string } func main() { t := template.New("page") t = template.Must(t.Parse(page)) t.Execute(os.Stdout, &scriptFiles{"/var/www", []string{"go.js", "lang.js"}}) }
$ 変数の使用 (推奨)
テキスト/テンプレートのドキュメントによると、実行開始時に $ は Execute() に渡されるデータ引数に設定され、これが開始値になります。ドットの。これは、$.Path を使用して外側スコープの .Path にアクセスできることを意味します。
const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`
カスタム変数の使用 (レガシー ソリューション)
別のアプローチは、次の方法です。以下に示すように、値を範囲スコープに渡すカスタム変数:
const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`
以上がGo テンプレートの範囲内の親/グローバル パイプラインにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。