首頁 > 後端開發 > Golang > 主體

如何在Go模板中定義和修改全域變數?

Susan Sarandon
發布: 2024-11-20 15:32:16
原創
828 人瀏覽過

How Can I Define and Modify Global Variables in Go Templates?

使用Go 範本:建立和修改全域變數

Go 範本提供了方便的功能,用於建立可重複使用的程式碼片段以產生動態HTML。使用模板時遇到的常見挑戰是無法跨模板的不同部分定義和修改全域變數。

問題:範圍有限的全域變數

考慮以下HTML 範本:

{{if .UserData}}
    {{$currentUserId := .UserData.UserId}}
    [<a href="#ask_question">Inside {{$currentUserId}}</a>]
{{else}}
    {{$currentUserId := 0}}
{{end}}
[<a href="#ask_question">outside {{$currentUserId}}</a>]
登入後複製

在局部條件中,模板定義了局部變數$currentUserId 並且指派了值基於UserData 屬性。然而,這個變數的作用域僅限於 if 區塊,而我們也希望在外部存取它。

解:定義與修改變數

定義一個Go 範本中的全域變量,使用賦值運算子:=.

{{$currentUserId := 0}}
登入後複製

若要變更變數的值,請使用賦值運算子=.

{{$currentUserId = .UserData.UserId}}
登入後複製

透過在if 區塊外部定義變數但在區塊內修改它,$currentUserId 的變更會在 if 區塊之後保留。

例如,以下程式碼在if 區塊之前和之後加入一些額外的邏輯:

{{$currentUserId := 0}}
Before: {{$currentUserId}}
{{if .UserData}}
    {{$currentUserId = .UserData.UserId}}
    [<a href="#ask_question">Inside {{$currentUserId}}</a>]
{{else}}
    {{$currentUserId = 0}}
{{end}}
After: {{$currentUserId}}
登入後複製

現在,對於UserData 存在和不存在的兩種情況, $currentUserId 變數都是正確的在if 區塊之外更新和存取。

其他方法

除了使用全域變量,還可以考慮:

  • 自訂函數:註冊自訂函數可讓您運行特定邏輯並從您的內部存取資料模板。
  • 模擬可變變數:透過使用自訂函數,您可以使用映射等機制來模擬可變變數的行為。

以上是如何在Go模板中定義和修改全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板