欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 詳解golang 模板(template)的常用基本語法

詳解golang 模板(template)的常用基本語法

熱門標簽:南通如皋申請開通400電話 學海導航地圖標注 地圖標注的汽車標 浙江高速公路地圖標注 廣州呼叫中心外呼系統(tǒng) 西部云谷一期地圖標注 高德地圖標注口訣 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 中國地圖標注省會高清

模板

在寫動態(tài)頁面的網(wǎng)站的時候,我們常常將不變的部分提出成為模板,可變部分通過后端程序的渲染來生成動態(tài)網(wǎng)頁,golang提供了html/template包來支持模板渲染。

這篇文章不討論golang后端的模板讀取及渲染方法,只討論模板中嵌入變量,渲染變量、循環(huán)等一些基本用法。

變量

在golang渲染template的時候,可以接受一個interface{}類型的變量,我們在模板文件中可以讀取變量內(nèi)的值并渲染到模板里。

有兩個常用的傳入?yún)?shù)的類型。一個是struct,在模板內(nèi)可以讀取該struct域的內(nèi)容來進行渲染。還有一個是map[string]interface{},在模板內(nèi)可以使用key來進行渲染。

我一般使用第二種,效率可能會差一點兒,但是用著方便。

模板內(nèi)內(nèi)嵌的語法支持,全部需要加{{}}來標記。

在模板文件內(nèi), . 代表了當前變量,即在非循環(huán)體內(nèi),.就代表了傳入的那個變量。假設(shè)我們定義了一個結(jié)構(gòu)體:

type Article struct {
  ArticleId int
  ArticleContent string
}

那么我們在模板內(nèi)可以通過

p>{{.ArticleContent}}span>{{.ArticleId}}/span>/p>

來獲取并把變量的內(nèi)容渲染到模板內(nèi)。假設(shè)上述的結(jié)構(gòu)體的內(nèi)容為ArticleId:1 ArticleContent:”hello”, 則對應(yīng)渲染后的模板內(nèi)容為:

p>hellospan>1/span>/p>

是不是很簡單呢。

當然,我們有時候需要定義變量,比如我們需要定義一個article變量,同時將其初始化為”hello”,那么我們可以這樣寫:

{{$article := "hello"}}

假設(shè)我們想要把傳入值的內(nèi)容賦值給article,則可以這樣寫:

{{$article := .ArticleContent}}

這樣我們只要使用{{$article}}則可以獲取到這個變量的內(nèi)容。

函數(shù)

golang的模板其實功能很有限,很多復雜的邏輯無法直接使用模板語法來表達,所以只能使用模板函數(shù)來繞過。

首先,template包創(chuàng)建新的模板的時候,支持.Funcs方法來將自定義的函數(shù)集合導入到該模板中,后續(xù)通過該模板渲染的文件均支持直接調(diào)用這些函數(shù)。

該函數(shù)集合的定義為:

type FuncMap map[string]interface{}

key為方法的名字,value則為函數(shù)。這里函數(shù)的參數(shù)個數(shù)沒有限制,但是對于返回值有所限制。有兩種選擇,一種是只有一個返回值,還有一種是有兩個返回值,但是第二個返回值必須是error類型的。這兩種函數(shù)的區(qū)別是第二個函數(shù)在模板中被調(diào)用的時候,假設(shè)模板函數(shù)的第二個參數(shù)的返回不為空,則該渲染步驟將會被打斷并報錯。

在模板文件內(nèi),調(diào)用方法也非常的簡單:

{{funcname .arg1 .arg2}}

假設(shè)我們定義了一個函數(shù)

func add(left int, right int) int

則在模板文件內(nèi),通過調(diào)用

{{add 1 2}}

就可以獲得

3

這個結(jié)果,golang的預定義函數(shù)沒有add,所以有點兒麻煩。

判斷

golang的模板也支持if的條件判斷,當前支持最簡單的bool類型和字符串類型的判斷

{{if .condition}}
{{end}}

當.condition為bool類型的時候,則為true表示執(zhí)行,當.condition為string類型的時候,則非空表示執(zhí)行。

當然也支持else , else if嵌套

{{if .condition1}}
{{else if .contition2}}
{{end}}

假設(shè)我們需要邏輯判斷,比如與或、大小不等于等判斷的時候,我們需要一些內(nèi)置的模板函數(shù)來做這些工作,目前常用的一些內(nèi)置模板函數(shù)有:

  • not 非

{{if not .condition}}
{{end}}

  • and 與

{{if and .condition1 .condition2}}
{{end}}

  • or 或

{{if or .condition1 .condition2}}
{{end}}

  • eq 等于

{{if eq .var1 .var2}}
{{end}}

  • ne 不等于

{{if ne .var1 .var2}}
{{end}}

  • lt 小于 (less than)

{{if lt .var1 .var2}}
{{end}}

  • le 小于等于

{{if le .var1 .var2}}
{{end}}

  • gt 大于

{{if gt .var1 .var2}}
{{end}}

  • ge 大于等于

{{if ge .var1 .var2}}
{{end}}

循環(huán)

golang的template支持range循環(huán)來遍歷map、slice內(nèi)的內(nèi)容,語法為:

{{range $i, $v := .slice}}
{{end}}

在這個range循環(huán)內(nèi),我們可以通過iiv來訪問遍歷的值,還有一種遍歷方式為:

{{range .slice}}
{{end}}

這種方式無法訪問到index或者key的值,需要通過.來訪問對應(yīng)的value

{{range .slice}}
{{.field}}
{{end}}

當然這里使用了.來訪問遍歷的值,那么我們想要在其中訪問外部的變量怎么辦?(比如渲染模板傳入的變量),在這里,我們需要使用$.來訪問外部的變量

{{range .slice}}
{{$.ArticleContent}}
{{end}}

模板的嵌套

在編寫模板的時候,我們常常將公用的模板進行整合,比如每一個頁面都有導航欄和頁腳,我們常常將其編寫為一個單獨的模塊,讓所有的頁面進行導入,這樣就不用重復的編寫了。

任何網(wǎng)頁都有一個主模板,然后我們可以在主模板內(nèi)嵌入子模板來實現(xiàn)模塊共享。

當模板想要引入子模板的時候,我們使用以下語句:

{{template "navbar"}}

這樣子就會嘗試載入名稱為navbar的子模板,同時我們也得定義一個子模板來實現(xiàn)”navbar”這個子模板。

子模板的定義為:

{{define "navbar"}}
{{end}}

在定義之間的內(nèi)容將會覆蓋{{template “navbar”}}

當然子模板是分離了,那么子模板能否獲得父模板的變量呢?這是當然的,我們只需要使用

{{template "navbar" .}}

就可以將當前的變量傳給子模板了,這個也是相當方便的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • golang的基礎(chǔ)語法和常用開發(fā)工具詳解
  • 對Golang import 導入包語法詳解
  • 手把手帶你走進Go語言之語法基礎(chǔ)解析

標簽:貴州 常州 保定 吐魯番 許昌 曲靖 德宏 東營

巨人網(wǎng)絡(luò)通訊聲明:本文標題《詳解golang 模板(template)的常用基本語法》,本文關(guān)鍵詞  詳解,golang,模板,template,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解golang 模板(template)的常用基本語法》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解golang 模板(template)的常用基本語法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产福利91精品一区二区三区| 麻豆精品免费视频| 中文字幕人妻无码系列第三区| 99精品视频一区| 国产黄色一区二区三区 | 中文字幕亚洲成人| 亚洲男同1069视频| 午夜精品久久久久久久99水蜜桃| 免费在线成人网| 国产91精品在线观看| 国产精品久久久久久亚洲av| 第一次破处视频| 91久久奴性调教| 欧美一级日韩免费不卡| 亚洲国产精品ⅴa在线观看| 一区二区日韩av| 久久er精品视频| 国产精品熟女一区二区不卡| 91福利在线看| 一区二区三区在线视频观看| 国产呦萝稀缺另类资源| 不卡的一区二区| 五月天av网站| 欧美一区中文字幕| 日本sm残虐另类| 肉丝美足丝袜一区二区三区四| 欧美性videosxxxxx| 久久久久久亚洲综合| 亚洲另类春色校园小说| 日本亚洲一区二区三区| 中文字幕观看av| 91麻豆精品国产自产在线 | 91精品国产综合久久福利软件| 午夜成人在线视频| 亚洲午夜久久久久久久久红桃 | 欧美巨大另类极品videosbest| 日本一区二区久久| 成人va在线观看| 国产一区在线观看免费| 欧美不卡一区二区三区四区| 亚洲日本成人在线观看| 国产传媒日韩欧美成人| 色噜噜狠狠一区二区三区果冻| 国产欧美日韩不卡| 精品影院一区二区久久久| 日本少妇色视频| 久久久国产精华| caoporn国产一区二区| 黄色精品视频在线观看| 亚洲人精品一区| www.17c.com喷水少妇| 欧美日韩在线一区二区| 亚洲精品成人少妇| 亚洲视频在线播放免费| 久久蜜臀中文字幕| 99精品国产91久久久久久| 正在播放一区二区| 国产一区激情在线| 91福利在线免费观看| 青青草原综合久久大伊人精品| 波多野结衣家庭教师在线观看| 欧美成人性战久久| 蜜桃传媒麻豆第一区在线观看| 亚洲狠狠婷婷综合久久久久图片| 一本到三区不卡视频| 午夜欧美在线一二页| 国产又粗又猛又爽又黄| 日韩欧美精品三级| 成a人片国产精品| 91麻豆精品91久久久久久清纯| 国产一区二区在线看| 欧美亚洲尤物久久| 亚洲黄色免费网站| 亚洲v国产v欧美v久久久久久| 日韩美女视频一区二区| 中文字幕丰满乱子伦无码专区| 亚洲欧洲韩国日本视频| 久久中文字幕人妻| 亚洲人吸女人奶水| 天天舔天天操天天干| 日本一二三不卡| 无码国产精品一区二区免费式直播| 国产午夜精品一区二区三区嫩草| 国产69精品久久777的优势| 在线成人午夜影院| www.综合网.com| 亚洲精品在线电影| 国产精品18久久久久久久久久久久 | 色av成人天堂桃色av| 狂野欧美性猛交blacked| 欧美这里有精品| 国产风韵犹存在线视精品| 欧美一区二视频| 91亚洲精品久久久蜜桃网站| 久久久蜜桃精品| 好吊色视频一区二区三区| 欧美精品一区二区三区蜜桃| 国产精品偷伦视频免费观看了| 亚洲国产高清不卡| 中文字幕人妻一区二区| 亚洲国产欧美日韩另类综合| 中文字幕第4页| 国产精品麻豆99久久久久久| av中文字幕在线不卡| 久久久久久97三级| 成人免费av片| 亚洲国产一区视频| 91久久精品网| 成人小视频免费在线观看| 欧美色精品在线视频| 国产91综合一区在线观看| 久久嫩草精品久久久久| 97国产精品videossex| 欧美国产丝袜视频| 成人影视免费观看| 日韩黄色在线观看| 色拍拍在线精品视频8848| 国产精品夜夜嗨| 久久久久久久网| 国产免费一区二区三区网站免费| 五月天网站亚洲| 欧美猛男男办公室激情| 国产成人精品亚洲777人妖| www久久精品| av女人的天堂| 欧美aⅴ一区二区三区视频| 91麻豆精品国产自产在线观看一区 | 中文字幕精品一区| 国产成人免费观看网站| 久久激五月天综合精品| 精品免费一区二区三区| 欧美精品黑人猛交高潮| 亚洲天堂成人网| 男女性高潮免费网站| 成人国产电影网| 亚洲色图欧美偷拍| 色婷婷香蕉在线一区二区| 成人avav影音| 亚洲免费观看在线视频| 在线视频一区二区三区| 久久久久亚洲av无码麻豆| 亚洲成人午夜影院| 91精品欧美一区二区三区综合在 | 国产精品二区视频| 午夜久久福利影院| 在线电影院国产精品| 久久精品一区二区免费播放| 久久精品av麻豆的观看方式| 国产性天天综合网| 一级黄色片日本| 99久久99久久综合| 亚洲一区二区在线播放相泽| 日韩在线观看视频一区二区| 成人福利视频在线看| 亚洲另类春色国产| 欧美日韩1234| 国产熟妇久久777777| 国产乱人伦精品一区二区在线观看 | 香蕉成人伊视频在线观看| 欧美成人一区二区三区在线观看| 久久丫精品忘忧草西安产品| 国产精品一区三区| 亚洲人成网站精品片在线观看| 欧美日韩一本到| 在线观看福利片| 成人永久看片免费视频天堂| 一区二区三区在线播放| 日韩一级完整毛片| 偷偷色噜狠狠狠狠的777米奇| 日本不卡一区二区| 欧美激情一区三区| 欧美性xxxxxx少妇| 日本高清www| 成人黄色小视频| 亚洲午夜一二三区视频| 欧美不卡一区二区| 国产av无码专区亚洲av毛网站| 国产一区二区不卡| 亚洲六月丁香色婷婷综合久久| 登山的目的在线| 美女扒开腿免费视频| 国产一区二区在线看| 亚洲国产日韩a在线播放| www久久精品| 欧美特级限制片免费在线观看| 最新中文字幕视频| 99久久婷婷国产综合精品电影| 日本视频在线一区| 亚洲欧美一区二区在线观看| 欧美疯狂性受xxxxx喷水图片| 亚洲精品91在线| 苍井空张开腿实干12次| 激情综合五月天| 亚洲一区二区精品久久av| 久久久久久久久久久久久女国产乱| 在线观看日韩一区| 一区二区三区在线观看视频| 欧美精品一区二区三区很污很色的| 一本大道久久a久久精品综合| av直播在线观看|