2013-05-11 5 views

답변

3

func (t *Template) Name() string 

이 (http://golang.org/pkg/text/template/#Template.Name에서) 무엇을 의미하는지는 "이름은 템플릿의 이름을 반환합니다."

에서 템플릿 이름에 액세스하려는 경우 템플릿을 내에 넣으려는 경우 template.FuncMap에 함수를 추가하거나 데이터 요소로 이름을 추가 할 것을 제안 할 때만 생각할 수 있습니다.

아마 같을 것이다 첫 번째 :

var t = template.Must(template.New("page.html").ParseFiles("page.html")) 
t.Funcs(template.FuncMap{"name": fmt.Sprint(t.Name())}) 

그러나 나는 그것이 내가 그것에 대해 엉망으로 한 빠른 시간에 동작하지 않습니다. 잘하면 올바른 방향으로 안내 할 수 있기를 바랍니다.

데이터 요소로 이름을 추가하는 것이 장기적으로 더 쉬울 수도 있습니다.

편집 :

전체 실행 예 : 경우 사람은 기본적으로 템플릿을 만든 후 FuncMap에 추가 한 후, 함수를 정의의 문제, 그것은 template.FuncMap를 사용하는 방법을 알고 싶어 :

func main() { 

    const text = "{{.Thingtype}} {{templname}}\n" 

    type Thing struct { 
     Thingtype string 
    } 

    var thinglist = []*Thing{ 
     &Thing{"Old"}, 
     &Thing{"New"}, 
     &Thing{"Red"}, 
     &Thing{"Blue"}, 
    } 

    t := template.New("things") 

    templateName := func() string { return t.Name() } 

    template.Must(t.Funcs(template.FuncMap{"templname": templateName}).Parse(text)) 

    for _, p := range thinglist { 
     err := t.Execute(os.Stdout, p) 
     if err != nil { 
      fmt.Println("executing template:", err) 
     } 
    } 
} 

출력 :

Old things 
New things 
Red things 
Blue things 

놀이터 링크 : http://play.golang.org/p/VAg5Gv5hCg

+0

감사합니다. 네, 그것이 제가 의미했던 것입니다. 그리고 네, 그 문서에서 Name() func을 보았습니다.하지만 FuncMaps를 사용하지 않고 액세스 할 수 있는지 궁금합니다. 나는 그것을 데이터 요소로 전달할 것이다. 다시 한번 감사한다. – rebnoob

+0

안녕하세요, FuncMap 사용법에 대한 전체 예제를 통해 답변을 업데이트했습니다. 나는 당신의 질문에 흥미를 느끼고 _really_ 그것을 해결하려고했습니다 :-) – Intermernet

+0

쿨, 고마워요! – rebnoob

관련 문제