Go テンプレート範囲ループで非構造体フィールドにアクセスする方法は?

Linda Hamilton
リリース: 2024-11-11 01:15:03
オリジナル
436 人が閲覧しました

How to Access Non-Struct Fields in Go Template Range Loops?

Go テンプレート エラー: 範囲ループ内の非構造体フィールドへのアクセス

Go HTML テンプレートでは、範囲ループ内の反復された構造体の一部ではないフィールドにアクセスすると、 「型 Y のフィールド X を評価できません」エラーが発生します。

この問題を解決するには、次のことを調べてみましょう。ユーザー構造体に .lang フィールドがないが、テンプレートがそれにアクセスする必要があるシナリオ。

サンプル ユーザー構造体:

type User struct {
    Username string
    Password []byte
    Email string
    ...
}
ログイン後にコピー

URL構造:

example.com/en/users

テンプレートコード:

{{ range .users }}
  <form action="/{{ .lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
ログイン後にコピー

エラー:

「タイプのフィールド lang を評価できません」 User"

解決策:

ループ内から .​​lang にアクセスするには、実行後にドット (.) の値が割り当てられる $ 変数を使用できます。

{{ range .users }}
  <form action="/{{ $.lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
ログイン後にコピー

これは、Go テンプレートのドキュメントによると、「$ は Execute に渡されるデータ引数に設定されるため、 "

したがって、$ 変数を使用して、範囲ループ内で反復される構造体の一部ではないフィールドにアクセスできます。

以上がGo テンプレート範囲ループで非構造体フィールドにアクセスする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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