フィールドがエクスポートされていないときに、Go で HTML テンプレートの構造体フィールドにアクセスする方法は?

Susan Sarandon
リリース: 2024-10-24 07:55:30
オリジナル
546 人が閲覧しました

How to Access Struct Fields in HTML Templates in Go When Fields Are Unexported?

Go で HTML テンプレートの構造体フィールドにアクセスする方法

問題

マップに格納されている構造体のフィールドに、 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!