range
golang 的 template 支援 range 循环来遍历 map、slice 内的内容
{{range $i, $v := .slice}}
{{end}}
关於 点. 和 作用域
在写template的时候,会经常用到”.”。比如{{.}}、{{len .}}、{{.Value}}、{{$x.Value}}等等。
在template中,点”.”代表当前作用域的当前物件。它类似於蛮多语言的 this 或者 self 。
template feat range
搭配 range 使用
var demoRangeString = "range start \n{{ range $key, $value :=.OneMap }} {{ $key }} ({{ $value }}) \n{{ end }}range end"
type demoRangeStruct struct {
OneMap map[string]string
}
func main() {
tempMap := make(map[string]string)
tempMap["cc"] = "dd"
tempMap["kkkey"] = "vvvalue"
tempMap["dd"] = "dd"
tempMap["fu"] = "ck"
fmt.Println(tempMap)
demoRangePointer := &demoRangeStruct{
OneMap: tempMap,
}
var tpl bytes.Buffer
t := template.Must(template.New("").Parse(demoRangeString))
if err := t.Execute(&tpl, demoRangePointer); err != nil {
fmt.Println(err)
return
}
fmt.Println(tpl.String())
输出为
map[cc:dd dd:dd fu:ck kkkey:vvvalue]
range start
cc (dd)
dd (dd)
fu (ck)
kkkey (vvvalue)
range end
template feat slice
var demoRangeSliceString = `
{{ range $key, $value :=.OneSlice }}
{{ $key }} ({{ $value }})
{{ end }}
`
type demoRangeSliceStruct struct {
OneSlice []string
}
func main() {
tempSlice := []string{"aa", "bb", "cc"}
fmt.Println(tempSlice)
demoRangeSlicePointer := &demoRangeSliceStruct{
OneSlice: tempSlice,
}
var tpl bytes.Buffer
t := template.Must(template.New("").Parse(demoRangeSliceString))
if err := t.Execute(&tpl, demoRangeSlicePointer); err != nil {
fmt.Println(err)
return
}
fmt.Println(tpl.String())
}
输出为
[aa bb cc]
0 (aa)
1 (bb)
2 (cc)
在命名 demoRangeSliceString 时 我使用了 `反引号
反引号用来建立原生的字串字面量,这些字串可能由多行组成
原生字串大部份用於输出多行讯息、HTML以及正则表示式
>>: 33岁转职者的前端笔记 DAY 27 CSS 三角形、三角形折角、转 45 度渐层色
在昨天的练习里,我们使用 TeamCity 在建置流程的最後一步产生 API 文件,并让文件可以直接...
09-15-2021 本章内容 pages意想不到的用途! 每个页面都是以pages作为基准路径 动...
目前都只有从 container 公开 port 并绑定到本机,使得 container 内的服务 ...
Beautiful Soup 当我们成功获取网页後,该如何「分析这个网页」才是更重要的一点。 HTM...
密码验证协议(PAP)发送未加密的密码。它比EAP-MD5和CHAP(都使用MD5)弱。因此,在三种...