欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解golang中模板的常用語法

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

1、變量賦值

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

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

{{$variable := pipeline}}

2、range

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

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

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

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

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

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

3、輸出原始字符串

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

{{"\"output\""}}
//	字符串常量
{{`"output"`}}
//	原始字符串常量
{{printf "%q" "output"}}
//	函數(shù)調(diào)用
{{"output" | printf "%q"}}
//	函數(shù)調(diào)用,最后一個(gè)參數(shù)來自前一個(gè)command的返回值
{{printf "%q" (print "out" "put")}}
//	加括號(hào)的參數(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}}
//	將變量使用在另一個(gè)action的with action
{{with $x := "output"}}{{$x | printf "%q"}}{{end}}
//	以管道形式將變量使用在另一個(gè)action的with action  

4、模板自定義方法添加

自定義方法添加一定要在ParseFiles解析之前,因?yàn)榻馕龅臅r(shí)候同時(shí)會(huì)校驗(yàn)?zāi)0逦募锏姆椒ê驼Z法

初始化有多種方法:

1、初始化空模板

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

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í)行的時(shí)候可以調(diào)用ExecuteTemplate方法,同時(shí)指定解析的模板名稱(只要模板名稱即可)或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里面的模板名稱需要是最父級(jí)的模板文件,如下的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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Gin框架中路由參數(shù)的使用

    淺析Gin框架中路由參數(shù)的使用

    這篇文章主要為大家介紹了路由參數(shù)的基本語法,以及路由匹配和路由參數(shù)值提取等相關(guān)內(nèi)容,以幫助讀者更好地對(duì)Gin?框架中路由參數(shù)進(jìn)行使用,需要的可以參考下
    2023-08-08
  • Go Slice擴(kuò)容的這些坑你踩過哪些

    Go Slice擴(kuò)容的這些坑你踩過哪些

    這篇文章主要為大家詳細(xì)介紹了Golang中對(duì)切片Slice的append操作時(shí)會(huì)遇到的踩坑經(jīng)驗(yàn)分享,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • go-micro集成RabbitMQ實(shí)戰(zhàn)和原理詳解

    go-micro集成RabbitMQ實(shí)戰(zhàn)和原理詳解

    本文主要介紹go-micro使用RabbitMQ收發(fā)數(shù)據(jù)的方法和原理,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Go關(guān)鍵字defer的使用和底層實(shí)現(xiàn)

    Go關(guān)鍵字defer的使用和底層實(shí)現(xiàn)

    defer是Go語言的關(guān)鍵字,一般用于資源的釋放和異常的捕捉,defer語句后將其后面跟隨的語句進(jìn)行延遲處理,就是說在函數(shù)執(zhí)行完畢后再執(zhí)行調(diào)用,也就是return的ret指令之前,本文給大家介紹了Go關(guān)鍵字defer的使用和底層實(shí)現(xiàn),需要的朋友可以參考下
    2023-11-11
  • 如何在?Go語言中使用日志包

    如何在?Go語言中使用日志包

    這篇文章主要介紹了如何在?Go語言中使用日志包,日志文件就是一種快速找到這些?bug,更好地了解程序工作狀態(tài)的方法,下文基于go語言介紹該詳細(xì)需要的小伙伴可以參考一下
    2022-04-04
  • Go?gRPC服務(wù)客戶端流式RPC教程

    Go?gRPC服務(wù)客戶端流式RPC教程

    這篇文章主要為大家介紹了Go?gRPC服務(wù)客戶端流式RPC教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go語言實(shí)現(xiàn)一個(gè)簡單生產(chǎn)者消費(fèi)者模型

    Go語言實(shí)現(xiàn)一個(gè)簡單生產(chǎn)者消費(fèi)者模型

    本文主要介紹了Go語言實(shí)現(xiàn)一個(gè)簡單生產(chǎn)者消費(fèi)者模型,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式

    Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式

    這篇文章主要介紹了Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Golang執(zhí)行g(shù)o get私有庫提示

    Golang執(zhí)行g(shù)o get私有庫提示"410 Gone" 的問題及解決辦法

    這篇文章主要介紹了Golang執(zhí)行g(shù)o get私有庫提示”410 Gone“ 解決辦法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Go語言實(shí)現(xiàn)操作MySQL的基礎(chǔ)知識(shí)總結(jié)

    Go語言實(shí)現(xiàn)操作MySQL的基礎(chǔ)知識(shí)總結(jié)

    這篇文章主要總結(jié)一下怎么使用Go語言操作MySql數(shù)據(jù)庫,文中的示例代碼講解詳細(xì),需要的朋友可以參考以下內(nèi)容,希望對(duì)大家有所幫助
    2022-09-09

最新評(píng)論