マップに格納されている構造体のフィールドに、 Go の html/template パッケージ。
デフォルトの Go テンプレートでは、構造体のエクスポートされていないフィールドへのアクセスが許可されません。これを有効にするには、名前の最初の文字を大文字にしてフィールドをエクスポートする必要があります。
エクスポートされたフィールドを含む構造体の定義:
<code class="go">type Task struct { cmd string args []string Desc string // Note the capital "D" }</code>
エクスポートされた構造を使用してマップを初期化します:
<code class="go">var taskMap = map[string]Task{ "find": Task{ cmd: "find", args: []string{"/tmp/"}, Desc: "find files in /tmp dir", }, "grep": Task{ cmd: "grep", args:[]string{"foo","/tmp/*", "-R"}, Desc: "grep files match having foo", }, }</code>
テンプレートを解析して実行します:
<code class="go">func listHandle(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("index.tmpl") t.Execute(w, taskMap) }</code>
テンプレート ファイル:
<code class="go"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
テンプレートは、マップ内のタスク構造体のエクスポートされたフィールドにアクセスできるようになります:
<code class="html"><html> <li>Task Name: find</li> <li>Task Value: {find [/tmp/] find files in /tmp dir}</li> <li>Task description: find files in /tmp dir</li> <li>Task Name: grep</li> <li>Task Value: {grep [foo /tmp/* -R] grep files match having foo}</li> <li>Task description: grep files match having foo</li> </html></code>
以上がフィールドがエクスポートされていないときに、Go で HTML テンプレートの構造体フィールドにアクセスする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。