W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
模板引擎默認(rèn)使用了 ?{{
? 和 ?}}
? 作為左右閉合標(biāo)簽,開(kāi)發(fā)者可通過(guò)?gview.SetDelimiters
?方法設(shè)置自定義的模板閉合標(biāo)簽。
使用 ?.
? 來(lái)訪問(wèn)當(dāng)前對(duì)象的值(模板局部變量)。
使用 ?$
? 來(lái)引用當(dāng)前模板根級(jí)的上下文(模板全局變量)。
使用 ?$var
? 來(lái)訪問(wèn)特定的模板變量。
模板中支持的 go 語(yǔ)言符號(hào)
{{"string"}} // 一般 string
{{`raw string`}} // 原始 string
{{'c'}} // byte
{{print nil}} // nil 也被支持
模板中的 ?pipeline
?
可以是上下文的變量輸出,也可以是函數(shù)通過(guò)管道傳遞的返回值
{{. | FuncA | FuncB | FuncC}}
當(dāng)?pipeline
?的值等于:
false
?或?0
?nil
?的指針或?interface
?0
?的?array
?, ?slice
?, ?map
?, ?string
?那么這個(gè)?pipeline
?被認(rèn)為是空。
需要注意:在?gf
?模板引擎中,當(dāng)模板中展示的指定變量不存在時(shí),將會(huì)顯示為空(標(biāo)準(zhǔn)庫(kù)模板引擎會(huì)展示?<no value>
?)。
{{if pipeline}}...{{end}}
?if
?判斷時(shí),?pipeline
?為空時(shí),相當(dāng)于判斷為?false
?。
支持嵌套的循環(huán)
{{if .condition}}
...
{{else}}
{{if .condition2}}
...
{{end}}
{{end}}
也可以使用?else if
?進(jìn)行
{{if .condition}}
...
{{else if .condition2}}
...
{{else}}
...
{{end}}
{{range pipeline}} {{.}} {{end}}
?pipeline
?支持的類型為?slice
?, ?map
?, ?channel
?。
注意:在?range
?循環(huán)內(nèi)部,?.
? 符號(hào)會(huì)被覆蓋為以上類型的子元素(局部變量)。如果想在循環(huán)中訪問(wèn)外部變量(全局變量),請(qǐng)加上?$
?符號(hào),如:?{{$.Session.Name}}
?
此外,對(duì)應(yīng)的值長(zhǎng)度為?0
?時(shí),?range
?不會(huì)執(zhí)行,?.
? 不會(huì)改變。
例如,遍歷?map
?:
{{range $key, $value := .MapContent}}
{{$key}}:{{$value}}
{{end}}
例如,遍歷?slice
?:
{{range $index, $elem := .SliceContent}}
{{range $key, $value := $elem}}
{{$key}}:{{$value}}
{{end}}
{{end}}
{{with pipeline}}...{{end}}
?with
?用于重定向?pipeline
?
{{with .Field.NestField.SubField}}
{{.Var}}
{{end}}
?define
?可以用來(lái)自定義模板內(nèi)容塊(給一段模板內(nèi)容定義一個(gè)模板名稱),可用于模塊定義和模板嵌套(使用在?template
?標(biāo)簽中)。
{{define "loop"}}
<li>{{.Name}}</li>
{{end}}
其中?loop
?為該模板內(nèi)容塊的名稱,隨后可使用template
標(biāo)簽調(diào)用模板:
<ul>
{{range .Items}}
{{template "loop" .}}
{{end}}
</ul>
?define
?標(biāo)簽需要結(jié)合?template
?標(biāo)簽一起使用,并且支持跨模板使用(在同一模板目錄/子目錄下有效,原理是使用的?ParseFiles
?方法解析模板文件)。
{{template "模板名稱" pipeline}}
將對(duì)應(yīng)的上下文?pipeline
?傳給模板,才可以在模板中調(diào)用。
注意:?template
?標(biāo)簽參數(shù)為模板名稱,而不是模板文件路徑,?template
?標(biāo)簽不支持模板文件路徑。
?template
?標(biāo)簽需要結(jié)合?define
?標(biāo)簽一起使用,并且支持跨模板使用(在同一模板目錄/子目錄下有效,原理是使用的?ParseFiles
?方法解析模板文件)。
該標(biāo)簽為?gf
?框架模板引擎新增標(biāo)簽
{{include "模板文件名(需要帶完整文件名后綴)" pipeline}}
在模板中可以使用?include
?標(biāo)簽載入其他模板(任意路徑),模板文件名支持相對(duì)路徑以及文件的系統(tǒng)絕對(duì)路徑。如果想要把當(dāng)前模板的模板變量傳遞給子模板(嵌套模板),可以這樣:
{{include "模板文件名(需要帶完整文件名后綴)" .}}
與?template
?標(biāo)簽的區(qū)別是:?include
?僅支持文件路徑,不支持模板名稱;而?tempalte
?標(biāo)簽僅支持模板名稱,不支持文件路徑。
允許多行文本注釋,不允許嵌套。
{{/*
comment content
support new line
*/}}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: