[13th][Day17] tamplete range

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以及正则表示式


<<:  Day15vue.js网站登出

>>:  33岁转职者的前端笔记 DAY 27 CSS 三角形、三角形折角、转 45 度渐层色

第二十七天:用 TeamCity 部署 API 文件

在昨天的练习里,我们使用 TeamCity 在建置流程的最後一步产生 API 文件,并让文件可以直接...

< 关於 next.js: 开始打地基| Next中的Pages,究竟有什麽用途? >

09-15-2021 本章内容 pages意想不到的用途! 每个页面都是以pages作为基准路径 动...

[13th][Day19] network bridge

目前都只有从 container 公开 port 并绑定到本机,使得 container 内的服务 ...

使用 Python 实作网路爬虫 part 2

Beautiful Soup 当我们成功获取网页後,该如何「分析这个网页」才是更重要的一点。 HTM...

扩展认证协议(EAP)最不可能用於建立点对点连接

密码验证协议(PAP)发送未加密的密码。它比EAP-MD5和CHAP(都使用MD5)弱。因此,在三种...