最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解golang中模板的常用語法

 更新時間:2023年08月03日 09:33:03   作者:yalishanda  
這篇文章主要介紹了golang模板中的常用語法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、變量賦值

Action里可以初始化一個變量來捕獲管道的執(zhí)行結(jié)果。初始化語法如下:

其中$variable是變量的名字。聲明變量的action不會產(chǎn)生任何輸出。

{{$variable := pipeline}}

2、range

循環(huán)切片數(shù)組等

如果"range" action初始化了1個變量,該變量設(shè)置為迭代器的每一個成員元素,如果初始化了逗號分隔的2個變量:

這時,key和val分別設(shè)置為數(shù)組/切片的索引或者字典的鍵,以及對應(yīng)的成員元素。注意這和go range從句只有一個參數(shù)時設(shè)置為索引/鍵不同!

// 這里的val是每一個元素,不是索引
{{range $val := .data}}
{{end}}
{{range $key,$val := .data}}
{{end}}

一個變量的作用域只到聲明它的控制結(jié)構(gòu)(“if”、“with”、“range”)的"end"為止,如果不是在控制結(jié)構(gòu)里聲明會直到模板結(jié)束為止。子模板的調(diào)用不會從調(diào)用它的位置(作用域)繼承變量。

模板開始執(zhí)行時,$會設(shè)置為傳遞給Execute方法的參數(shù),就是說,dot的初始值。

3、輸出原始字符串

下面是一些單行模板,展示了pipeline和變量。所有都生成加引號的單詞"output":

{{"\"output\""}}
//	字符串常量
{{`"output"`}}
//	原始字符串常量
{{printf "%q" "output"}}
//	函數(shù)調(diào)用
{{"output" | printf "%q"}}
//	函數(shù)調(diào)用,最后一個參數(shù)來自前一個command的返回值
{{printf "%q" (print "out" "put")}}
//	加括號的參數(shù)
{{"put" | printf "%s%s" "out" | printf "%q"}}
//	玩出花的管道的鏈?zhǔn)秸{(diào)用
{{"output" | printf "%s" | printf "%q"}}
//	管道的鏈?zhǔn)秸{(diào)用
{{with "output"}}{{printf "%q" .}}{{end}}
//	使用dot的with action
{{with $x := "output" | printf "%q"}}{{$x}}{{end}}
	//創(chuàng)建并使用變量的with action
{{with $x := "output"}}{{printf "%q" $x}}{{end}}
//	將變量使用在另一個action的with action
{{with $x := "output"}}{{$x | printf "%q"}}{{end}}
//	以管道形式將變量使用在另一個action的with action  

4、模板自定義方法添加

自定義方法添加一定要在ParseFiles解析之前,因為解析的時候同時會校驗?zāi)0逦募锏姆椒ê驼Z法

初始化有多種方法:

1、初始化空模板

如果初始化的是空模板的話,最后在執(zhí)行的時候必須調(diào)用ExecuteTemplate方法,同時指定解析的模板名稱(只要模板名稱即可)

t := template.New("")
t = t.Funcs(template.FuncMap{"formatStr": formatStr})
t, err = t.ParseFiles("view/demo.html")
err = t.ExecuteTemplate(w, "demo.html", p)

2、初始化解析模板

如果初始化的是解析模板的話,最后在執(zhí)行的時候可以調(diào)用ExecuteTemplate方法,同時指定解析的模板名稱(只要模板名稱即可)或Execute方法都行

t := template.New("demo.html")
t = t.Funcs(template.FuncMap{"formatStr": formatStr})
t, err = t.ParseFiles("view/demo.html")
//err = t.ExecuteTemplate(w, "demo.html", p)
// 或
err = t.Execute(w,  p)

3、嵌套模板自定義方法

一般情況頁面都指多模板嵌套顯示:所以這種情況下New和ExecuteTemplate里面的模板名稱需要是最父級的模板文件,如下的layout.html

t := template.New("layout.html")
t = t.Funcs(template.FuncMap{"formatStr": formatStr})
t, err = t.ParseFiles([]string{
"view/layout.html",
"view/header.html",
"view/demo.html",
"view/footer.html",
}...)
//err = t.ExecuteTemplate(w, "layout.html", p)
// 或
err = t.Execute(w,  p)

到此這篇關(guān)于詳解golang中模板的常用語法的文章就介紹到這了,更多相關(guān)golang模板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang截取字符串方法示例講解及對比

    Golang截取字符串方法示例講解及對比

    這篇文章主要介紹了Golang截取字符串方法,文中介紹了使用rune函數(shù)和utf包以及range遍歷的方式,熟練掌握這些可以幫助我們更方便地處理字符串,提高編程效率和代碼質(zhì)量,感興趣的同學(xué)可以參考下文
    2023-05-05
  • Go語言中同一個package中函數(shù)互相調(diào)用為undefined的解決

    Go語言中同一個package中函數(shù)互相調(diào)用為undefined的解決

    這篇文章主要介紹了Go語言中同一個package中函數(shù)互相調(diào)用為undefined的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • go實現(xiàn)一個分布式限流器的方法步驟

    go實現(xiàn)一個分布式限流器的方法步驟

    項目中需要對api的接口進(jìn)行限流,本文主要介紹了go實現(xiàn)一個分布式限流器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Go語言omitempty選項的實現(xiàn)

    Go語言omitempty選項的實現(xiàn)

    本文主要介紹了Go語言omitempty選項的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • go語言算法題解二叉樹的拷貝、鏡像和對稱

    go語言算法題解二叉樹的拷貝、鏡像和對稱

    這篇文章主要為大家詳細(xì)介紹了go語言算法題解二叉樹的拷貝、鏡像和對稱,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • Go實現(xiàn)快速生成固定長度的隨機字符串

    Go實現(xiàn)快速生成固定長度的隨機字符串

    這篇文章主要為大家詳細(xì)介紹了怎樣在Go中簡單快速地生成固定長度的隨機字符串,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以學(xué)習(xí)一下
    2022-10-10
  • go換國內(nèi)源的方法步驟

    go換國內(nèi)源的方法步驟

    在中國境內(nèi),由于網(wǎng)絡(luò)原因,直接下載Go語言的包可能會遇到速度慢或下載失敗的問題,可以使用國內(nèi)的Go模塊代理來加速下載速度,本文就來介紹一下go換國內(nèi)源的方法步驟,感興趣的可以了解一下
    2024-09-09
  • golang判斷結(jié)構(gòu)體為空的問題

    golang判斷結(jié)構(gòu)體為空的問題

    這篇文章主要介紹了golang判斷結(jié)構(gòu)體為空的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Go語言面向?qū)ο筇匦?封裝、組合、多態(tài))超詳細(xì)講解

    Go語言面向?qū)ο筇匦?封裝、組合、多態(tài))超詳細(xì)講解

    面向?qū)ο缶幊叹哂懈邇?nèi)聚低耦合,易維護(hù)、易擴展、易復(fù)用的優(yōu)點,而Go語言中也是可以進(jìn)行面向?qū)ο缶幊痰?這篇文章主要介紹了Go語言面向?qū)ο筇匦?封裝、組合、多態(tài))的相關(guān)資料,需要的朋友可以參考下
    2026-03-03
  • golang多次讀取http request body的問題分析

    golang多次讀取http request body的問題分析

    這篇文章主要給大家分析了golang多次讀取http request body的問題,文中通過代碼示例和圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01

最新評論

商城县| 将乐县| 台中市| 兰州市| 沁水县| 望都县| 宝坻区| 舟曲县| 桑植县| 如东县| 中西区| 黔南| 赫章县| 全南县| 土默特右旗| 罗江县| 奉新县| 慈溪市| 昭觉县| 响水县| 延安市| 阿城市| 西林县| 疏勒县| 包头市| 兴宁市| 清远市| 巴塘县| 隆子县| 伊吾县| 柳江县| 鄂伦春自治旗| 横峰县| 临沭县| 长沙市| 红桥区| 凉山| 抚远县| 繁昌县| 新宾| 阳江市|