#yyds干货盘点#Golang 模板(text/template) (一)


作者:Linux猿

简介:CSDN博客专家,华为云享专家,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

欢迎小伙伴们点赞、收藏⭐、数据科学与大数据技术留言


Golang 模板提供了将一个变量值填充到一个文本或HTML模板中的机制,有两种提数据驱动测试供模板功能的包,分别是:text/template 和 html/linuxtemplate,两个软件包具有相同的接口,主要区别是html/template为了防止注入GJ,将一些字符进行了转义。

这篇文章主要以 text/template 为例进行讲解,本篇主要介绍模板基本概念和使用步骤,更多的模板技巧和复杂操作将在Go系统运维面试题及答案lang 模板(textlinux操作系统基础知识/template)(二linux系统)中进行介绍。

一、基本概念

先简单理解模板中使用到的几html标签属性大全个概念,后面会通过实例进行讲解:

Actio系统运维面试题及答案ns : 数据数据驱动测试评估和控制结构,有“{{” 和 “}}” 包裹起来;

Text : 模板中可以原样输出的文本;

Arguments : 值,可以是布尔值、整数、函数等;

Pipelines : 命令的链式序列;linux

二、使用步骤

(1)定义模西部数据驱动

根据需要定义自己的模板,使用字符串的形式表示,例如:

strTemplate := "I like {{.}}!\n" 

其中,{{.}} 就是一个Actions。

(2)解析模板

定义模板名称,对模板进行解析,例如:

templ, err := template.New("templateName").Parse(strTemplate)

其中,linux除文件命令templateName为模板名。

(3数据恢复)数据驱动模板

将数据与解析后模板结合,产生输出,例如:

err = templ.Execute(os.Stdout, variable) 

三、简单模板

3.1 传递单个变量

先介绍下传递单个变量值的简单模板,没有复杂的结构,便于快速理解。

import (
"os"
"text/template"
)

func main() {
name := "cats" // 填充内容-可变
strTemplate := "I like {{.}}!\n" // (1)定义模板-固定不变
templ, err := template.New("templateName").Parse(strTemplate) // (2)解析模板
if err != nil {
panic(err)
}
err = templ.Execute(os.Stdout, name) //(3)数据驱动模板,将name的值填充到模板中
if err != nil {
panic(err)
}
}

输出为:

I like cats!

变量name在第(3)步数据驱动模板的时候会替换掉模板中的 {{.}},注意导入的标西部数据驱动准库是 text/template 还是 html/template。当然,你可以修改name的值,就可以输出不同的结果。

从上面的列子可以看出,{{.}} 用来代指模板中将要替换的系统/运维元素,其中“.”指向当前元素,和Lihtmlnux中的目录有异曲同工之妙,上面的理解后,再来看一个复杂点的。

3.2 传递结构体

有的系统运维工程师时候传递单个变量满足不了需求,需要传递结构体,下面通过一个linux操作系统基础知识例子来看下。

import (
"os"
"text/template"
)

type student struct {
Name string
Like string
}

func main() {

Joy := student{"Joy", "Ping pang"}
strTemplate := "My name is {{.Name}} and I like to play {{.Like}}!\n" // (1)定义模板-固定不变
templ, err := template.New("templateOne").Parse(strTemplate) // (2)解析模板
if err != nil {
panic(err)
}
err = templ.Execute(os.Stdout, Joy) //(3)数据驱动模板,将name的值填充到模板中
if err != nil {
panic(err)
}
}

输出为:

My name is  Joy and I like to play Ping pang!

在模板中使用.Name 或 .Like等变量名来获取结构体内的变量,当在第(3)步linux数据驱动模板传入对应结构体的时候会将对应的值填充到模板对应位置。当然,如果结构体内的变量也是一个结构体,可以使用 “.” 作更进一步引用,例如:假设上面结构体中Like也是一个结构数据结构体,包含变量Num,可以这样引用:{{.Like.Num}},这里就不再上代码了linux系统安装

四、总结

从上面的例子中,知道如何使用模板,可以定义简单的模板系统运维工程师面试问题及答案,并且模板中对输入数据的取值通过“.”,如果是嵌套的结构,还是使用“.”作更进一层的操作。

这一篇就先系统运维工资一般多少写到这里系统运维工资一般多少,下一篇将更深入的讲解。


CS系统运维工资一般多少DN博客专家,华为云享专家,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题数据科学与大数据技术私聊!

欢迎小伙伴们点赞、收藏⭐、留言