Golang 模板(text/template) (一)详解
🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,数据结构和算法、C/C++、面试、刷题、Linux尽管咨询我,关注我,有问题私聊!
🎈 关注专栏: 动图讲解数据结构和算法 (优质好文持续更新中……)🚀
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
目录
Golang 模板提供了将一个变量值填充到一个文本或HTML模板中的机制,有两种提供模板功能的包,分别是:text/template 和 html/template,两个软件包具有相同的接口,主要区别是html/template为了防止注入攻击,将一些字符进行了转义。
这篇文章主要以 text/template 为例进行讲解,本篇主要介绍模板基本概念和使用步骤,更多的模板技巧和复杂操作将在
中进行介绍。一、基本概念
先简单理解模板中使用到的几个概念,后面会通过实例进行讲解:
Actions : 数据评估和控制结构,有“{{” 和 “}}” 包裹起来;
Text : 模板中可以原样输出的文本;
Arguments : 值,可以是布尔值、整数、函数等;
Pipelines : 命令的链式序列;
二、使用步骤
(1)定义模板
根据需要定义自己的模板,使用字符串的形式表示,例如:
其中,{{.}} 就是一个Actions。
(2)解析模板
定义模板名称,对模板进行解析,例如:
其中,templateName为模板名。
(3)数据驱动模板
将数据与解析后模板结合,产生输出,例如:
三、简单模板
3.1 传递单个变量
先介绍下传递单个变量值的简单模板,没有复杂的结构,便于快速理解。
输出为:
变量name在第(3)步数据驱动模板的时候会替换掉模板中的 {{.}},注意导入的标准库是 text/template 还是 html/template。当然,你可以修改name的值,就可以输出不同的结果。
从上面的列子可以看出,{{.}} 用来代指模板中将要替换的元素,其中“.”指向当前元素,和Linux中的目录有异曲同工之妙,上面的理解后,再来看一个复杂点的。
3.2 传递结构体
有的时候传递单个变量满足不了需求,需要传递结构体,下面通过一个例子来看下。
输出为:
在模板中使用.Name 或 .Like等变量名来获取结构体内的变量,当在第(3)步数据驱动模板传入对应结构体的时候会将对应的值填充到模板对应位置。当然,如果结构体内的变量也是一个结构体,可以使用 “.” 作更进一步引用,例如:假设上面结构体中Like也是一个结构体,包含变量Num,可以这样引用:{{.Like.Num}},这里就不再上代码了。
四、总结
从上面的例子中,知道如何使用模板,可以定义简单的模板,并且模板中对输入数据的取值通过“.”,如果是嵌套的结构,还是使用“.”作更进一层的操作。
这一篇就先写到这里,
将更深入的讲解。CSDN博客专家🏆,华为云享专家🏆,数据结构和算法、C/C++、面试、刷题、Linux尽管咨询我,关注我,有问题私聊!
欢迎小伙伴们点赞👍、收藏⭐、留言💬
- 点赞
- 收藏
- 关注作者
评论(0)