[GO] Template使用

关于点"."和作用域

{{.}}代表当前对象,{{.name}}代表当前对象的name属性

输入模板结果
zhangyuMy Name is {{.}}My Name is zhangyu
{“name”:“zhangyu”}My Name is {{.name}}My Name is zhangyu
{“people”:{“name”:“zhangyu”,“alias”:“zy”}}{{with .people}}My Name is {{.name}}, my alias is {{.alias}}{{end}}My Name is zhangyu, my alias is zy.
去除空白(包括换行符、制表符、空格等)

可以在{{符号的后面加上"- “来去除它前面的空白,即{{- xxxx}}
在}}的前面加上”-"来去除它后面的空白,即{{xxxx -}}。

  • {{23}} < {{45}} -> 23 < 45
  • {{23}} < {{- 45}} -> 23 <45
  • {{23 -}} < {{45}} -> 23< 45
  • {{23 -}} < {{- 45}} -> 23<45
条件判断
  • {{if pipeline}} T1 {{end}}
  • {{if pipeline}} T1 {{else}} T0 {{end}}
  • {{if pipeline}} T1 {{else if pipeline}} T0 {{end}}
    需要注意的是,pipeline为false的情况是各种数据对象的0值:数值0,指针或接口是nil,数组、slice、map或string则是len为0。
range…end迭代
  • {{range pipeline}} T1 {{end}}
  • {{range pipeline}} T1 {{else}} T0 {{end}}
    range可以迭代slice、数组、map或channel。迭代的时候,会设置"."为当前正在迭代的元素。
示例
	temp := `今日数据:
    {{with .owner}}共有{{.projectCount}}个项目提交代码,{{.userCount}}个开发者加入开发。{{end}}
    {{with .user}}今天提交{{.uploadTimes}}次,共计{{.codeLines}}行代码;
    {{- with .commitMsgNumber}}
    每次的提交信息为{{- range $k,$v :=.}} {{- if (ne $k 0)}}、{{end}}{{.}}{{end -}}
    {{else}},每次都未写提交信息{{end}}。
    {{end}}
    `
	ownerParams := map[string]interface{}{
		"owner": map[string]interface{}{
			"projectCount": 10,
			"userCount":    5,
		},
		"user": map[string]interface{}{
			"uploadTimes": "2",
			"codeLines":   "200",
			"commitMsgNumber": []string{
				"初始化项目架构", "完成开发", "自测完成",
			},
		},
	}

	t := template.Must(template.New("DailyData").Parse(temp))
	var r bytes.Buffer
	err := t.Execute(&r, ownerParams)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(r.String())
运行结果

可修改ownerParams查看不同的入参对应的输出结果:https://play.studygolang.com/p/nTh–hvUOe9

今日数据:
共有10个项目提交代码,5个开发者加入开发。
今天提交2次,共计200行代码;
每次的提交信息为初始化项目架构、完成开发、自测完成。

运行调试
  • https://play.studygolang.com/p/5h6uW04vCwA
    • templateString:填写数据库插入的模板
    • messageData:填写grpc传输的json数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值