Go テンプレートの範囲アクションでの親/グローバル パイプラインへのアクセス
Go のテキスト/テンプレート パッケージでは、範囲アクションまたは親/グローバル パイプラインが必須です。次の例を考えてみましょう:
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"}}) }
この例では、.dot が現在の Files 要素に変換されるため、範囲アクション内では .Path にアクセスすることはできません。
推奨解決策 - $ 変数の使用
テキスト/テンプレート パッケージのドキュメントによると、$ 変数は Execute に渡されるデータ引数を保持します。これは .dot の初期値です。したがって、範囲アクションで $.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 テンプレートの Range アクションで親/グローバル パイプラインにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。