ホームページ > バックエンド開発 > Golang > Go の html/template パッケージを使用して HTML テンプレート内のマップ要素の構造体フィールドにアクセスする方法

Go の html/template パッケージを使用して HTML テンプレート内のマップ要素の構造体フィールドにアクセスする方法

DDD
リリース: 2024-10-24 07:34:30
オリジナル
358 人が閲覧しました

How to Access Struct Fields of Map Elements in HTML Templates Using Go's html/template Package?

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

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