HTML/テンプレートの Go パッケージ内のマップ要素の構造体フィールドを取得しています
状況:
構造体と、その構造体を値として使用するマップがあります。 html/template パッケージを使用してレンダリングされた HTML ページ内の構造体のフィールドにアクセスしたいと考えています。
解決策:
テンプレート内の構造体のフィールドへのアクセスを有効にするには、次のようにします。それらはエクスポートする必要があります。フィールドをエクスポートするには、その名前を大文字で始める必要があります。
詳細な説明:
<code class="go">type Task struct { cmd string args []string Desc string // Exported field }</code>
説明の大文字の「D」に注意してください。
同様に、マップとテンプレートの参照を更新します:
<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="html">{{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}}</code>
結果:
出力には、各タスクの Desc フィールドが含まれます:
<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/template パッケージを使用して HTML テンプレート内のマップ要素の構造体フィールドにアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。