go - 什么时候应该将数据传递给模板以及什么时候调用函数?

标签 go

当通过 Funcs 将函数传递给模板时,这些可以直接在模板中调用。数据也可以通过 Execute 传递.

到目前为止,我已将一般数据传递给模板,并且仅在例如必须格式化时间或某些字符串时才调用函数。见下文。

结合两者:

{{range .AssignedTickets}}
  <p>FormatDate .Date</p>
  <p>{{FormatEditorName .EditorID}}</p>
{{end}}

主要使用函数,假设仅 EditorID 作为数据传递:

{{$assignedTickets := GetAssignedTickets .EditorID}}
{{range $assignedTickets}}
  <p>FormatDate .Date</p>
  <p>{{FormatEditorName .EditorID}}</p>
{{end}}

什么时候应该传递数据以及什么时候应该调用函数?是否存在性能原因来避免其中之一(我想我应该避免在模板内调用函数?)

最佳答案

传入数据的一大优点是:它是恒定的。如果您调用一个函数两次(例如当前日期),它可能会返回两个不同的值(例如,如果一次调用发生在午夜之前,另一次调用发生在午夜之后)。 另外:可能失败的函数最好在模板之外处理。

调用格式化函数(显示逻辑):是,因为这些函数是确定性的并且不会失败。 调用业务逻辑:否。

关于go - 什么时候应该将数据传递给模板以及什么时候调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53314768/

相关文章:

go - Cookie 不会在同一域的不同页面之间持续存在

go - HDFS 客户端拨号 tcp : lookup xxx(my hostname) on 127. 0.0.11:53:没有这样的主机

go - 在 Go 中的接口(interface){}片段上搜索接口(interface){}的函数

go - 将 python 代码转换为 Go 的性能较差

intellij-idea - Intellij 自动优化 Go 的导入

concurrency - Go webcrawler 在检查大约 2000 个 url 后挂起

go - 如何通过 golang 中的 CGO 将 Go 字符串复制到 C char *?

go - golang变量的内存可以在其声明范围之外使用吗

go - 使用带有 MutateIn 的 golang couchbase 社区 sdk

escaping - 编码/解码 URL 的推荐方法