Go テンプレートを使用する場合、テンプレート間で複数の値を渡すことが必要になる場合があります。ただし、text/template パッケージの {{template}} アクションは、単一のオプションのデータ値の受け渡しのみをサポートします。このため、複数のデータ要素を効果的に転送する方法という問題が生じます。 1 つのアプローチは、データを単一の値に統合することです。 Go には、データを構造体にラップするかマップを利用するという 2 つのオプションがあります。
1 つの方法は、転送するデータをカプセル化する構造体を作成することです。この構造体をテンプレートに渡し、ドット表記とともに使用して、テンプレート内の個々のデータ要素にアクセスできます。以下に例を示します。
type DataWrapper struct { Shops []Destination CityName string RegionName string }
構造体の使用が不便な場合は、データを単純なマップにラップすることもできます。マップ キーはデータ要素名を表し、マップ値は実際のデータ値になります。以下に例を示します。
func Wrap(shops []Destination, cityName, regionName string) map[string]interface{} { return map[string]interface{}{ "Shops": shops, "CityName": cityName, "RegionName": regionName, } }
データを構造体またはマップにラップしたら、カスタム関数を使用してこのデータをテンプレートに渡すことができます。カスタム関数は Template.Funcs() メソッドを使用して登録できます。これは、テンプレート テキストを解析する前に行う必要があります。データを渡すためにカスタム関数を使用する例を次に示します。
const src = ` {{define "data"}} City: {{.CityName}}, Region: {{.RegionName}}, Shops: {{.Shops}} {{end}} {{- range . -}} {{$city:=.Name}} {{- range .Regions -}} {{$region:=.Name}} {{- template "data" (Wrap .Shops $city $region) -}} {{end}} {{- end}}`
データを単一の値に構造化し、カスタム関数を利用することで、Go テンプレート間で複数の値を効果的に渡すことができます。 。これにより、テンプレートのさまざまな部分間で複雑なデータ構造を効率的に共有できるようになり、Go Web アプリケーションの柔軟性と保守性が向上します。
以上がGo テンプレート間で複数の値を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。