首頁 >後端開發 >Golang >如何管理和修改Go HTML模板中的全域變數?

如何管理和修改Go HTML模板中的全域變數?

Patricia Arquette
Patricia Arquette原創
2024-11-17 22:10:02392瀏覽

How Can I Manage and Modify Global Variables in Go HTML Templates?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn