ホームページ > バックエンド開発 > Golang > Go テンプレート間で複数の値を渡すにはどうすればよいですか?

Go テンプレート間で複数の値を渡すにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-04 16:33:10
オリジナル
355 人が閲覧しました

How to Pass Multiple Values Between Go Templates?

Go テンプレート間で複数の値を渡す

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート