2013-02-11 2 views
3

필자는 템플릿이 template.Template 형식의 컴파일 된 버전을 얻기 위해 런타임에 지정된 소스에서 파싱된다는 것을 알고 있습니다. 그런 다음, 컴파일 된 버전은 실제 템플릿 작업을 수행하기 위해 일부 데이터에서 실행됩니다.컴파일 타임에 템플릿 구문 분석

하지만 다음은 궁금합니다. 컴파일 할 때 템플릿을 구문 분석 할 수 있습니까?

+3

아니요.하지만 애플리케이션을 시작할 때 한 번 구문 분석하여 다시 사용할 수 있도록 캐시 할 수 있습니다. – thwd

+0

오케이, 그게 내가 생각한거야. 감사 ! – girodt

답변

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

관련 문제