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

複数のデータ オブジェクトを Go テンプレートに渡すにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-29 06:35:09
オリジナル
454 人が閲覧しました

How Can I Pass Multiple Data Objects to a Go Template?

Go テンプレートに複数のデータを渡す

Go では、テンプレートにデータを入力するときに、単一の値を渡すことができます。構造体、マップ、スライスなどの複合値。

複数のデータ オブジェクトをテンプレート:

構造体の使用:

エクスポートされたフィールドとして目的のデータ オブジェクトを埋め込む構造体を作成します:

type Data struct {
    Results []User // MongoDB query result
    Other   []int  // Integer array
}
ログイン後にコピー

構造体を次のフィールドに渡します。テンプレートの実行:

data := &Data{results, []int{1, 2, 3}}
if err := GetTemplate("list").Execute(w, data); err != nil {
    // Handle error
}
ログイン後にコピー

テンプレート:

{{range .Results}}
    User name: {{.Name}}
{{end}}

{{range .Other}}
    {{.}}
{{end}}
ログイン後にコピー
ログイン後にコピー

マップの使用:

データ オブジェクトをキーと値のペアとして使用してマップを作成します:

m := map[string]interface{}{
    "Results": results,
    "Other":   []int{1, 2, 3},
}
ログイン後にコピー

Passテンプレート実行へのマップ:

if err := GetTemplate("list").Execute(w, m); err != nil {
    // Handle error
}
ログイン後にコピー

テンプレート:

{{range .Results}}
    User name: {{.Name}}
{{end}}

{{range .Other}}
    {{.}}
{{end}}
ログイン後にコピー
ログイン後にコピー

スライスの使用:

読みにくくなりますが、インターフェースのスライスを渡すこともできます。{}:

s := []interface{}{
    results,
    []int{1, 2, 3},
}
ログイン後にコピー

スライスをテンプレート実行に渡します:

if err := GetTemplate("list").Execute(w, s); err != nil {
    // Handle error
}
ログイン後にコピー

template:

{{range index . 0}}
    User name: {{.Name}}
{{end}}

Other: {{index . 1}}
ログイン後にコピー

注: カスタム関数またはチャネルを使用して複数のデータ オブジェクトを渡すこともできますが、あまり一般的ではないと考えられています。

以上が複数のデータ オブジェクトを Go テンプレートに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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