在我的理解中,go模板是在运行时从给定源解析的,以便获得template.Template类型的编译版本。然后,对某些数据执行编译后的版本以执行实际的模板。在编译时解析模板
但是,我想知道:是否有可能在编译时解析模板?
在我的理解中,go模板是在运行时从给定源解析的,以便获得template.Template类型的编译版本。然后,对某些数据执行编译后的版本以执行实际的模板。在编译时解析模板
但是,我想知道:是否有可能在编译时解析模板?
只是让它们成为全局变量like this。您仍然可以在运行时解析模板,但它会立即生效,因此如果二进制文件无法正确解析它,只要运行它就会失败。
package main
import (
"fmt"
"text/template"
)
var t = template.Must(template.New("name").Parse("text"))
func main() {
fmt.Println("Template", t)
}
不能在编译时执行它,但是您可以在main()
之前通过在the init function内解析它们来解析它们。
我也是这么做的。 init()函数似乎非常适合安装相关的东西,比如编译/缓存模板,设置数据库连接以及在应用程序可用之前做其他任何你想做的事情。 – AntelopeSalad 2013-02-14 23:10:05
不,但您可以在启动应用程序时解析它们并缓存它们以供重用。 – thwd 2013-02-11 10:58:13
好的,这就是我的想法。谢谢 ! – girodt 2013-02-11 12:28:43