在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中文網其他相關文章!