工作记录
今天是2021年,8月20日星期五,线上办公第1??4??天 暑假的实习生活要结束了,呜~,时间过的是真滴快呀🙁
任务清单
今天继续写配置文件,现在已经写到PrometheusAlert自定义模版那里了,写到这,又激发了我对于Go template语法学习的好奇心。决心一定要去找一个合适的学习资源。(PrometheusAlert报警模版是基于Go template开发的呦😜)
任务记录
任务:部分Go template语法学习
先给大家分享一下学习网站,找了好久,终于有一个稍微对路的了 Golang系列文章(大家可以直接看标准库、第三方库版块):https://www.junmajinlong.com/golang/index/#blog1543740847
根据我编写的template模版,其实只需要两大知识点: 1??range…end迭代: 迭代表达式有如下两种类型:
{{range pipline}} T1 {{end}}
{{range pipline}} T1 {{else}} T0 {{end}}
range可以迭代slice、数组、map或channel。迭代的时候,会设置"."为当前正在迭代的元素 还有就是,对于第一个表达式,当迭代对象的值为0值时,则range直接跳过,就像if一样。对于第二个表达式,则在迭代到0值时执行else语句。
range的参数部分是pipeline,所以在迭代的过程中是可以进行赋值的,赋值方式有两种:
{{range $value := .}}
{{range $key, $value := .}}
如果range中只赋值给一个变量,则这个变量是当前正在迭代元素的值 如果赋值给两个变量,则第一个变量是索引值,第二个变量是当前正在迭代元素的值
2??if…else… 判断语句 if的判断语句一共有四条:
{{if pipline}} T1 {{end}}
{{if pipline}} T1 {{else}} T0 {{end}}
{{if pipline}} T1 {{else if pipline}} T0 {{end}}
{{if pipline}} T1 {{else}} {{if pipline}} T0 {{end}} {{end}}
# 第三条与第四条功能一致,第四条就是前面三条的组合
相信有其他编程基础的小伙伴对这个语句的理解肯定不会陌生 不过有一点需要注意??啦,pipeline为false的情况是各种数据对象为0值时的情况:数值为0,指针或接口为nil,而数组、slice、map或string则是len为0的情况
总结
今天又是写文章的一天啦,不过能在这个过程中又解决一个问题就感觉很充实啦,感觉自己的“芝士🧀”又涨啦,嘻嘻嘻🤗
|