栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang模板引擎管道

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang模板引擎管道

有2个

template
软件包,
text/template
html/template

它们具有相同的接口,但是该

html/template
程序包用于生成安全的HTML输出,以防止代码注入,因此应使用该程序包,而不是
text/template
在输出为HTML时使用。

由于它们具有相同的界面,但是

html/template
提供了一些额外的功能(对插入的数据进行上下文转义),因此仅在上记录了基础知识和原理
text/html
,而
html/template
大多数文献则集中在详细说明额外内容上。

话虽如此,“管道”属于基础。它记录在管道

text/template
部分:

流水线

管道是“命令”的可能链接的序列。命令是一个简单的值(参数)或函数或方法调用,可能带有多个参数:

Argument    The result is the value of evaluating the argument..Method [Argument...]    The method can be alone or the last element of a chain but,    unlike methods in the middle of a chain, it can take arguments.    The result is the value of calling the method with the    arguments:        dot.Method(Argument1, etc.)functionName [Argument...]    The result is the value of calling the function associated    with the name:        function(Argument1, etc.)    Functions and function names are described below.

通过用流水线字符“
|”分隔命令序列,可以“链接”流水线。在链式管道中,每个命令的结果作为以下命令的最后一个参数传递。流水线中最终命令的输出是流水线的值。

“参数”和“管道”是对数据的评估。

“点”

.
基本上是一个光标,指向执行模板时传递的数据结构中的某处。点的起始值是您传递的值,但是许多操作(例如
{{range}}
或)都会修改该点
{{with}}

执行模板将遍历结构并设置光标,并用句点“。”表示。并在执行过程中将其称为“点”到结构中当前位置的值。

因此,在编写时

.Name
,这表示点当前指向的值,您要引用其字段或方法或称为的键
Name
。例如,如果您传递
struct
,则模板的开头
.Name
将表示struct字段(
Name
如果存在)或其命名为的方法
Name()

调用/包含另一个模板时,您可以告诉您将什么值传递给其执行。编写时

{{template "something".}}
,这意味着您要将当前由点指向的值传递给模板执行。如果只希望传递
Name
点所指向的结构的字段,则可以像那样进行
{{template"something" .Name}}

您在管道中传递的值

{{template}}
将成为调用的其他模板内的点。

因此,在处理/渲染模板时,点可能会更改,并且“仅”指向最初传递给模板执行的部分值。通常它很方便,或者仍然需要达到原始值,而不仅仅是光标。为此,模板包提供了

$

开始执行时,将$设置为传递给Execute的数据参数,即dot的起始值。

因此,即使您位于

{{range}}
例如(将点设置为要遍历的数组/ slice
/映射的连续元素)内,您仍然可以伸手并引用传递给该对象的值的任何其他部分模板执行。

因此,例如,如果您遍历像这样的书

{{range .Books}}
,并且需要
Name
原始传递的struct
的字段,则可以在内部执行
{{range}}
以下操作:

{{range .Books}}    Title: {{.Title}}    Original name: {{$.Name}}{{end}}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号