第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在模板中聲明全局變量?

如何在模板中聲明全局變量?

Go
LEATH 2022-05-10 13:38:41
我需要編寫一個模板,在其中首先定義一些變量,然后將它們用于從模板生成的內(nèi)容中:{{ if $value.Env.CADDY_URL }}    {{ $url := $value.Env.CADDY_URL }}{{ else }}    {{ $url := printf "http://%s.example.info" $value.Name }}{{ end }}{{/* more template */}}{{/* and here I would like to use $url defined above */}}{{ $url }}我得到錯誤undefined variable "$url"閱讀文檔,我看到了變量的范圍擴(kuò)展到聲明它的控制結(jié)構(gòu)(“if”、“with”或“range”)的“結(jié)束”操作,如果沒有這樣的控制結(jié)構(gòu),則擴(kuò)展到模板的末尾。這是否意味著沒有全局(或整個模板的范圍)變量?或者有沒有一種方法可以定義$url以便稍后在模板中重復(fù)使用?
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個贊

變量是作用域的。您在and塊內(nèi)創(chuàng)建$url變量,因此它們在這些塊之外不可見。{{if}}{{else}}


在 , 之前創(chuàng)建變量{{if}},并使用賦值=而不是聲明:=:


{{$url := ""}}

{{ if . }}

    {{ $url = "http://true.com" }}

{{ else }}

    {{ $url = "http://false.com" }}

{{ end }}


{{ $url }}

測試它:


t := template.Must(template.New("").Parse(src))


fmt.Println(t.Execute(os.Stdout, true))

fmt.Println(t.Execute(os.Stdout, false))

輸出(在Go Playground上試試):


http://true.com<nil>

http://false.com<nil>

注意:使用賦值修改模板變量是在Go 1.11中添加的,因此您需要使用 Go 1.11 或更高版本構(gòu)建您的應(yīng)用程序。如果您使用的是舊版本,則無法修改模板變量的值。


查看完整回答
反對 回復(fù) 2022-05-10
  • 1 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號