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