2014-01-09 3 views
6

에 나는 대문자로 같은 string.ToUpper를 사용하여 golang 템플릿에 문자열 원하는 :Golang 템플릿 : 사용 파이프 대문자 문자열

{{ .Name | strings.ToUpper }} 

을하지만 strings 내 데이터의 속성이 아니기 때문에이없는 작업을 수행합니다.

strings 패키지는 사용하지 않는다고 경고하므로 가져올 수 없습니다. http://play.golang.org/p/7D69Q57WcN

+1

이 질문에 답할 수는 없지만 :이 템플릿으로 HTML을 렌더링하는 경우 대문자가 단지 프리젠 테이션인지 여부를 생각해보십시오. 그렇다면 CSS의'text-transform : capitalize'를 대신 사용하십시오 - 이것은 [언어 인식] (https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform)입니다. – djd

답변

28

그냥 템플릿으로의 ToUpper 기능을 주입하기 위해이 같은 FuncMap (playground)를 사용 : 다음 스크립트

.

import (
    "bytes" 
    "fmt" 
    "strings" 
    "text/template" 
) 

type TemplateData struct { 
    Name string 
} 

func main() { 
    funcMap := template.FuncMap{ 
     "ToUpper": strings.ToUpper, 
    } 

    tmpl, _ := template.New("myTemplate").Funcs(funcMap).Parse(string("{{ .Name | ToUpper }}")) 

    templateDate := TemplateData{"Hello"} 
    var result bytes.Buffer 

    tmpl.Execute(&result, templateDate) 
    fmt.Println(result.String()) 
}