Go HTML/テンプレートでのグローバル変数の管理
Go の HTML/テンプレートで変数を作成する場合、通常、そのスコープは条件ブロックに制限されますそこで定義されています。これを克服し、テンプレートの複数のセクション間で変数を共有するには、別のアプローチが必要です。
Go 1.11 では、テンプレート変数を変更するための新しいメカニズムが導入されました。
グローバルの作成変数:
グローバル変数を定義するには、代入演算子 (:=) を使用します:
{{$globalVar := value}}
グローバル変数の変更:
グローバル変数の値を変更するには、代入演算子 (=) を使用します:
{{$globalVar = newValue}}
条件ブロック内のユースケース:
グローバル変数が{{if}} ブロックの外で作成されましたが、ブロック内で変更された場合、変更はブロックの後に表示されます。
{{$globalVar := 0}} Before: {{$globalVar}} {{if .UserData}} {{$globalVar = .UserData.UserId}} [<a href="#ask_question">Inside {{$globalVar}}</a>] {{else}} {{$globalVar = 0}} {{end}} [<a href="#ask_question">Outside {{$globalVar}}</a>]
例:
次のテンプレートを考えてみましょう。 :
m := map[string]interface{}{} t := template.Must(template.New("").Parse(src)) m["UserData"] = UserData{99} if err := t.Execute(os.Stdout, m); err != nil { panic(err) }
次のソースの場合:
Before: {{$globalVar}} [<a href="#ask_question">Inside {{$globalVar}}</a>] [<a href="#ask_question">Outside {{$globalVar}}</a>]
出力は次のようになります:
Before: 0 [<a href="#ask_question">Inside 99</a>] [<a href="#ask_question">Outside 99</a>]
これは、グローバル変数を変更して変更を加える機能を示しています。テンプレート全体に反映されます。
以上がGo HTML テンプレートでグローバル変数を管理および変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。