当前位置: 首页 > 面试题库 >

转到模板功能

闻人和歌
2023-03-14
问题内容

当我尝试使用Funcs和时,它注意到Go模板很奇怪FuncMap。以下代码按预期工作:

buffer := bytes.NewBufferString("")

funcMap := template.FuncMap{
    "label": strings.Title,
}

t, _ := template.New("alex").Funcs(funcMap).Parse("{{label \"alex\"}}")

t.Execute(buffer, "")

return string(buffer.Bytes()) //=> "Alex"

但是,当我尝试将模板放在文件中时,它不起作用(Execute()说:)"alex" is an incomplete or empty template

t, _ := template.New("alex").Funcs(funcMap).ParseFiles("template.html")

使用template.html:

{{label \"alex\"}}

知道为什么吗?这是一个错误吗?有没有更简单的方法在模板中使用方法/功能?


问题答案:

ParseFiles可能会使用更好的文档。一个模板对象可以包含多个模板,每个模板都有一个名称。如果查看ParseFiles的实现,则会看到它使用 文件名
作为模板对象内部的模板名称。因此,将文件的名称与模板对象的名称相同(可能通常不实用),或者使用ExecuteTemplate而不是Execute。



 类似资料:
  • 问题内容: 在(和)包中,具有以下签名: 到底是干什么用的?我已经扫描了文档(还有一些资料),但无济于事。我只是用一个空字符串实例化所有模板,这似乎没有什么不同。我为什么要打扰一个名字? 即使是命名模板,两者似乎是等效的: https://play.golang.org/p/wKzCHdLf2S 问题答案: 毫无疑问,模板的名称就是为模板 命名 。 到底有什么好处呢?只要您不想 引用 该模板,就没

  • 问题内容: 在我去的代码,我经常用这样的 Go模板中的等效代码将是 不幸的是在模板代码失败,如果是:/ 在go模板中是否可以实现相同的目的? 问题答案: 模板功能不像Go 操作符那样进行短路评估。 在调用函数之前先评估函数的参数。即使为nil ,也总是对表达式求值。 解决方法是使用嵌套: 您可以避免嵌套或使用模板函数: 游乐场的例子

  • "Pay attention to what you hear; the measure you give will be the measure you get, and still more will be given you. For to those who have, more will be given; and from those who have nothing, even wh

  • 我希望输出日志消息的方式与使用bash“logger”命令的方式完全相同,但在Java中使用Log4j: 在尝试了许多不同的模式后,我无法再现相同的输出。知道怎么写这个图案吗? 谢谢你,

  • 问题内容: 我知道在模板中我可以调用以表达式命名的函数,例如。但是如何为表达式命名函数呢? 问题答案: 您总是可以定义这样的功能:

  • 问题内容: 我有定义功能的Go程序。我也有一个地图,每个功能都应该有一个键。我怎样才能做到这一点? 我已经尝试过了,但这是行不通的。 问题答案: 您是否正在尝试做这样的事情?我已经修改了示例,以使用各种类型和数量的函数参数。