ホームページ  >  記事  >  バックエンド開発  >  Go でテンプレート範囲ループ内の URL パラメーターにアクセスする方法

Go でテンプレート範囲ループ内の URL パラメーターにアクセスする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-09 12:59:02842ブラウズ

How to Access URL Parameters Within a Template Range Loop in Go?

テンプレート範囲ループ内の URL パラメーターへのアクセス

Go テンプレートを使用する場合、ループ内でデータにどのようにアクセスできるかを理解することが重要です。次のコードとテンプレートを考えてみましょう:

type User struct {
    Username string
    Password []byte
    Email string
}

func main() {
    users := []User{
        {Username: "Alice", Email: "alice@example.com"},
        {Username: "Bob", Email: "bob@example.com"},
    }

    renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{
        "lang":  chi.URLParam(r, "lang"),
        "users": 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 }}

このアプローチでは問題が正常に解決され、範囲ループ内で「lang」パラメータにアクセスできるようになります。 「ドット」と「$」の動作については、Go テンプレート ガイドに記載されています。

代替アプローチ

「$」を使用してデータにアクセスするシナリオが発生した場合は、ネストされたループのため困難な場合は、「ドット」を一時変数に割り当てるか、「with」ステートメントを使用して割り当て専用のスコープを作成するなどの代替オプションを検討してください。データ。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。