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

詳解golang中模板的常用語法

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

1、變量賦值

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

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

{{$variable := pipeline}}

2、range

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

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

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

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

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

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

3、輸出原始字符串

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

{{"\"output\""}}
//	字符串常量
{{`"output"`}}
//	原始字符串常量
{{printf "%q" "output"}}
//	函數調用
{{"output" | printf "%q"}}
//	函數調用,最后一個參數來自前一個command的返回值
{{printf "%q" (print "out" "put")}}
//	加括號的參數
{{"put" | printf "%s%s" "out" | printf "%q"}}
//	玩出花的管道的鏈式調用
{{"output" | printf "%s" | printf "%q"}}
//	管道的鏈式調用
{{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解析之前,因為解析的時候同時會校驗模板文件里的方法和語法

初始化有多種方法:

1、初始化空模板

如果初始化的是空模板的話,最后在執(zhí)行的時候必須調用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í)行的時候可以調用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)

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

相關文章

  • 淺析Gin框架中路由參數的使用

    淺析Gin框架中路由參數的使用

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

    Go Slice擴容的這些坑你踩過哪些

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

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

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

    Go關鍵字defer的使用和底層實現

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

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

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

    Go?gRPC服務客戶端流式RPC教程

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

    Go語言實現一個簡單生產者消費者模型

    本文主要介紹了Go語言實現一個簡單生產者消費者模型,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Golang IPv4 字符串與整數互轉方式

    Golang IPv4 字符串與整數互轉方式

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

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

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

    Go語言實現操作MySQL的基礎知識總結

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

最新評論