2013-02-11 76 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