Go テンプレートで配列の最初の要素の名前フィールドにアクセスする方法は?

Barbara Streisand
リリース: 2024-11-08 11:51:02
オリジナル
357 人が閲覧しました

How to Access the Name Field of the First Element in an Array in Go Templates?

Go テンプレートで配列の最初のインデックスの値にアクセスする

Go で HTML テンプレートを使用する場合、次のような状況が発生することがあります。配列の最初のインデックスの値にアクセスする必要があります。この課題に対処するために、目的のデータを抽出するための正しい構文を調べてみましょう。

提供されたコード スニペットは、テンプレート内の配列の最初の要素の Name フィールドにアクセスする試みを示しています。

<div>Foobar {{ index .Doc.Users 0}}'</div>
ログイン後にコピー

ただし、{{index .Doc.Users 0}} は、Name フィールドと Email フィールドの両方を含む配列の最初の要素全体を返すため、このアプローチでは望ましい結果は得られません。 Name フィールドのみを取得するには、次のように式をグループ化し、.Name セレクターを適用する必要があります。

<div>Foobar {{ (index .Doc.Users 0).Name }}</div>
ログイン後にコピー

この改善された構文では、インデックス関数は Doc.Users 配列の最初の要素を返します。これは括弧内に強制的に入れられて式をグループ化し、その後、名前フィールドへのアクセスを提供します。

例:

type User struct {
    Name  string
    Email string
}

t := template.Must(template.New("").Parse(
    `<div>Foobar {{ (index .Doc.Users 0).Name }}</div>`))

m := map[string]interface{}{
    "Doc": map[string]interface{}{
        "Users": []User{
            {Name: "Bob", Email: "user1@example.com"},
            {Name: "Alice", Email: "user2@example.com"},
        },
    },
}

fmt.Println(t.Execute(os.Stdout, m))
ログイン後にコピー

出力:

<div>Foobar Bob</div><nil>
ログイン後にコピー

これは更新されましたコードは目的の出力を生成します。ここで、Doc.Users 配列の最初の要素の Name フィールドがテンプレート内で正常に取得されます。

以上がGo テンプレートで配列の最初の要素の名前フィールドにアクセスする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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