template 概述

text/template
html/templatetext/templatetext/template

解析流程

template.Parse()template.New()*Template
parseexecuteio.Writer

下边我们看一段简单的 使用template 的代码

运行后可以看到输出:

接下来我们就一起来分析下执行过程:

template.New

Parse阶段

*parse.Treehtml/template*commonmap{{define block}}parse.Tree

tRootparse.Tree

TextNodeActionNode.Nameparse.Tree

Execute阶段

Root
ActionNodeTextNode
ActionNodeevalPipeline()printValue()TextNodeWrite()
io.Writer

至此, 整个流程完成.

小结

text/template
  • Parse阶段
template.Templateparse.NodeListparse.Node
  • Execute阶段
parse.Nodeio.Writer
protobuf