ホームページ >バックエンド開発 >Golang >Go の html/template パッケージ内でグローバル変数を作成および変更するにはどうすればよいですか?

Go の html/template パッケージ内でグローバル変数を作成および変更するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-25 08:41:27296ブラウズ

How Can I Create and Modify Global Variables Within Go's html/template Package?

Go の html/template 内の複数の場所でグローバル変数を作成し変更する

Go の html/template パッケージ内で変数を定義するスコープは、それをその特定の領域に効果的に分離します。提供された例では、変数 $currentUserId はテンプレート全体で持続する値を格納することを目的としていましたが、その範囲は if 条件に制限されています。

テンプレート変数の変更

Go 1.11 では、テンプレート変数を変更する機能が導入されました。 := を使用すると変数が定義され、= は新しい値を割り当てます。変数が if 条件の外側で定義され、その値が if 条件内で変更される場合、変数はグローバルにアクセス可能になります。

{{$currentUserId := 0}}
{{if .UserData}}
    {{$currentUserId = .UserData.UserId}}
    [<a href="#ask_question">Inside {{$currentUserId}}</a>]
{{else}}
    [No User Data]
{{end}}
[<a href="#ask_question">outside {{$currentUserId}}</a>]

これにより、{{if}} ブロック内で行われた変更がブロックの終了後に反映されます。 .

代替アプローチ

  • カスタム関数: UserData の存在に基づいてユーザー ID を返す CurrentUserId() のような関数を登録します。
  • シミュレートされた変数: 登録されたカスタム関数を利用して、変更可能な変数をシミュレートし、データをマップに保存します

結論

Go のテンプレート パッケージはシンプルさにおいて優れていますが、複雑なロジックには制限があります。ただし、代入関数とカスタム関数を使用すると、テンプレート内の複数の場所にまたがる値を効果的に操作できます。

以上がGo の html/template パッケージ内でグローバル変数を作成および変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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