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