模板 – texthtml模板包中的“范围” *** 作和“管道”说明. Golang

模板 – texthtml模板包中的“范围” *** 作和“管道”说明. Golang,第1张

概述我尝试在text / html模板包中获得一些优点.我从golang网站上读过它的文档.很难理解究竟是什么意思. (点)一般而且在范围动作的某个时间.究竟什么意思是“管道”,也许很难理解,因为我的英语不是母语): {{pipeline}}The default textual representation of the value of the pipelineis copied to the 我尝试在text / HTML模板包中获得一些优点.我从golang网站上读过它的文档.很难理解究竟是什么意思. (点)一般而且在范围动作的某个时间.究竟什么意思是“管道”,也许很难理解,因为我的英语不是母语):

{{pipeline}}The default textual representation of the value of the pipelineis copIEd to the output.

我们来看一个例子:

data := map[string]interface{}{        "struct": &Order{            ID:     1,CustID: 2,Total:  3.65,name: "Something",},"name1":  "Timur","name2": "Renat",}    t.ExecuteTemplate(rw,"index",data)

这是“索引”:

{{define "index"}}    {{range $x := .}}        {{.}}        <b>{{$x}}</b><br>        <i>{{$.struct.ID}}</i><br>        <br>        # the lines below don't work and break the loop        # {{.ID}}        # or        # {{.struct.ID}}        # what if I want here another range loop that handles "struct" members        # when I reach "struct" fIEld in the data variable or just do nothing        # and just continue the loop?     {{end}}{{end}}

输出:

帖木儿
帖木儿
1

长Renat
长Renat
1

{1 2 3.65 Something}
{1 2 3.65 Something}
1

解决方法 管道

模板包中的管道指的是您在命令行中执行的相同类型的“管道”.

例如,这是在Mac上为您的NIC分配默认网关的一种方法:

route -n get default | grep 'gateway' | awk '{print }'

基本上,首先运行路径-n get default.管道字符|不是将结果打印到控制台说“获取route命令的输出,并将其推送到grep命令”.此时,grep“gateway”在从路由接收的输入上运行.然后将grep的输出推入awk.最后,由于没有更多的管道,您在屏幕上看到的唯一输出是awk想要打印的内容.

这在模板包中是相同的.您可以将值传递给方法调用并将它们链接在一起.如:

{{ "Hello World!" | printf "%s" }}

这相当于{{printf“%s”“Hello World!” }}

See an example in the Go Playground here

基本上,

{{ "Hello World!" | printf "%s"           }}    ^^^^^^^^^^^^               ^^^^^^^^^^         |__________________________|

这在函数式语言中是非常常见的(从我所看到的……我知道它在F#中的一个东西).

点.

点是“上下文意识”.这意味着,它取决于你把它放在哪里改变意义.当您在模板的正常区域中使用它时,它就是您的模型.在范围循环中使用它时,它将成为迭代的当前值.

See an example in the Go Playground here

在链接的示例中,仅在范围循环中,$x和.是相同的.循环结束后,点返回传递给模板的模型.

检查“struct”

你的结构是一个键值对…一个地图.为此,您需要确保在范围循环中提取两个部分:

{{ range $key,$value = . }}

这将为您提供每次迭代时的键和值.之后,您只需要检查相等性:

{{ if eq $key "struct" }}    {{ /* $value.ID is the ID you want */ }}

See an example on the Go Playground here

希望这会有所帮助.

总结

以上是内存溢出为你收集整理的模板 – text / html模板包中的“范围” *** 作和“管道”说明. Golang全部内容,希望文章能够帮你解决模板 – text / html模板包中的“范围” *** 作和“管道”说明. Golang所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存