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}} ブロック内で行われた変更がブロックの終了後に反映されます。 .
代替アプローチ
結論
Go のテンプレート パッケージはシンプルさにおいて優れていますが、複雑なロジックには制限があります。ただし、代入関数とカスタム関数を使用すると、テンプレート内の複数の場所にまたがる値を効果的に操作できます。
以上がGo の html/template パッケージ内でグローバル変数を作成および変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。