2013-02-11 77 views
3

在我的理解中,go模板是在运行时从给定源解析的,以便获得template.Template类型的编译版本。然后,对某些数据执行编译后的版本以执行实际的模板。在编译时解析模板

但是,我想知道:是否有可能在编译时解析模板?

+3

不,但您可以在启动应用程序时解析它们并缓存它们以供重用。 – thwd 2013-02-11 10:58:13

+0

好的,这就是我的想法。谢谢 ! – girodt 2013-02-11 12:28:43

回答

4

只是让它们成为全局变量like this。您仍然可以在运行时解析模板,但它会立即生效,因此如果二进制文件无法正确解析它,只要运行它就会失败。

package main 

import (
    "fmt" 
    "text/template" 
) 

var t = template.Must(template.New("name").Parse("text")) 

func main() { 
    fmt.Println("Template", t) 
} 
1

不能在编译时执行它,但是您可以在main()之前通过在the init function内解析它们来解析它们。

+0

我也是这么做的。 init()函数似乎非常适合安装相关的东西,比如编译/缓存模板,设置数据库连接以及在应用程序可用之前做其他任何你想做的事情。 – AntelopeSalad 2013-02-14 23:10:05