Go の html/template パッケージでグローバル変数を作成する場合、スコープの制限を理解することが重要です。パッケージのドキュメントによると、テンプレートで定義された変数には、変数が宣言されている制御構造 (if、with、range など) の終わりまで拡張される限定されたスコープがあります。
次の HTML/テンプレート コードを考えてみましょう:
{{if .UserData}} {{$currentUserId := .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId := 0}} {{end}} [<a href="#ask_question">outside {{$currentUserId}}</a>]
このコードは、if ブロックの内側に現在のユーザー ID を表示し、ブロックの外側に 0 を表示することを目的としています。 ブロック。ただし、$currentUserId のスコープが制限されているため、結果は両方の場所で 0 と表示されます。
Go 1.11 では、テンプレート変数値の変更のサポートが導入されました。変数を初期化するには、次のように := を使用します。
{{$currentUserId := 0}}
値を更新するには、次のように = を使用します。
{{$currentUserId = .UserData.UserId}}
if ブロックの外側で定義された変数を変更することによって、変更にはブロックの内側と外側の両方からアクセスできます。
場合グローバル変数の変更は適切ではありません。次の代替案を検討してください。
これらのソリューションを活用すると、Go の html/template パッケージでグローバル変数を作成および変更し、適切な変数スコープを確保し、必要な機能を実現できます。テンプレート。
以上がGo HTML テンプレートでグローバル変数のスコープを効果的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。