Golang tmpl语法简介

背景: go语言可以采用tmpl模板来生成许多代码 , 可以加速开发效率

text/template 和 html/template 是 Golang 标准库提供的两个数据驱动的模板库,通常被用于文本生成和 HTML 生成。本文将介绍 Golang 模板库的语法和使用。

简单的例子 

// 构建模板
tmpl, err := template.New("").Parse("你好,{
  { . }}")
if err != nil {
    panic(err)
}

// 输出文本, 最终输出 "你好,Weicong"
err = tmpl.Execute(os.Stdout, "Weicong")
if err != nil {
    panic(err)
}

上图是一个简单tmpl 例子 采用了 { { . }} 作为变量占位符

文本和空白

在模板文本中,一切动态的内容和判断代码块均使用 { {  和 }} 包括起来,比如上述的示例 { { . }},在 { {  和 }} 之外的文本均会被原封不动地拷贝到输出中。

为了方便格式化模板源代码,还额外提供了 { {- 和 -}} 两种语法,可以将代码块前或代码块后的空白字符均移除。空白字符包括空格符、换行符、回车符、水平制表符。

{
  { 12 }} < {
  { 34 }}   {
  {/* => 12 < 34 */}}
{
  { 12 }} < {
  {- 34 }}  {
  {/* => 12 <34 */}}
{
  { 12 -}} < {
  { 34 }}  {
  {/* => 12< 34 */}}
{
  { 12 -}} < {
  {- 34 }} {
  {/* => 12<34 */}}

注释

模板文本中可以使用 { {/* xxx */}} 记录相关注释,注释不会被最终生成到文本中。但是需要注意的,注释前后的空格和换行均会保留,如果需要去除也可以使用 { {- 和 -}}

传入复杂数据结构

前面的例子中 我们使用 { { . }} 输入了一个变量,这里的 . 表示当前作用域的对象值。

传入对象也可以传入一个更复杂的结构体。

type Params struct {
	UserName string
	SiteName string
}

tmpl, _ := template.New("").Parse("你好,这里是{
  { .UserName }}的{
  { .SiteName }}。")
_ 

你可能感兴趣的:(golang,go)