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.
Go を使用したソリューションのスコープが制限されているため、結果は両方の場所で 0 と表示されます。Go 1.11 では、テンプレート変数値の変更のサポートが導入されました。変数を初期化するには、:= を次のように使用します:
{{$currentUserId := 0}}
値を更新するには、= を次のように使用します:
{{$currentUserId = .UserData.UserId}}
if ブロックの外側で定義された変数を変更すると、変更を次のように行うことができます。
グローバル変数の変更が適切でない場合は、次の代替案を検討してください:
これらのソリューションを活用すると、Go の html/template パッケージでグローバル変数を作成および変更し、適切な変数スコープを確保し、必要な機能を実現できます。テンプレート。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3