go标准库的text/template

Posted 刘贤松handler

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go标准库的text/template相关的知识,希望对你有一定的参考价值。

template包实现了数据驱动的用于生成文本输出的模板。其实简单来说就是将一组文本嵌入另一组文本模版中,返回一个你期望的文本

如果要生成html格式的输出,参见html/template包,该包提供了和本包相同的接口,但会自动将输出转化为安全的HTML格式输出,可以抵抗一些网络攻击。

用作模板的输入文本必须是utf-8编码的文本。"Action",即数据运算和控制单位由""和""界定(即Action);在Action之外的所有文本都不做修改的拷贝到输出中。Action内部不能有换行,但注释可以有换行。

Action中的运算可以通过()进行分组

package main

import (
	"os"
	"text/template"
)

type Inventory struct 
	Username string
	Phone    uint
	Tag      bool
	Sex      string


func main() 
	sweaters := Inventory"移动", 10086, false,"难"

	content := `
.Phone of .Username if .Tag  tag=true else   tag=false end
    `
	tmpl, err := template.New("test").Parse(content)
	//.Phone获取的是struct对象中的Phone字段的值
	if err != nil 
		panic(err)
	
	err = tmpl.Execute(os.Stdout, sweaters) // 10086 of 移动  tag=true
	if err != nil 
		panic(err)
	

and
    函数返回它的第一个empty参数或者最后一个参数;
    就是说"and x y"等价于"if x then y else x";所有参数都会执行;
or
    返回第一个非empty参数或者最后一个参数;
    亦即"or x y"等价于"if x then x else y";所有参数都会执行;
not
    返回它的单个参数的布尔值的否定
len
    返回它的参数的整数类型长度
index
    执行结果为第一个参数以剩下的参数为索引/键指向的值;
    如"index x 1 2 3"返回x[1][2][3]的值;每个被索引的主体必须是数组、切片或者字典。
print
    即fmt.Sprint
printf
    即fmt.Sprintf
println
    即fmt.Sprintln
html
    返回其参数文本表示的HTML逸码等价表示。
urlquery
    返回其参数文本表示的可嵌入URL查询的逸码等价表示。
js
    返回其参数文本表示的javascript逸码等价表示。
call
    执行结果是调用第一个参数的返回值,该参数必须是函数类型,其余参数作为调用该函数的参数;
    如"call .X.Y 1 2"等价于go语言里的dot.X.Y(1, 2);
    其中Y是函数类型的字段或者字典的值,或者其他类似情况;
    call的第一个参数的执行结果必须是函数类型的值(和预定义函数如print明显不同);
    该函数类型值必须有1到2个返回值,如果有2个则后一个必须是error接口类型;
    如果有2个返回值的方法返回的error非nil,模板执行会中断并返回给调用模板执行者该错误;

更多:

go标准库的学习-text/template - 慢行厚积 - 博客园

以上是关于go标准库的text/template的主要内容,如果未能解决你的问题,请参考以下文章

go标准库的text/template

go语言标准库之http/template

Go语言标准库之http/template

Go语言标准库之http/template

Go标准库:Go template 用法解读

Go标准库:Go template 用法解读