2014-01-09 7 views
6

Ich möchte oberen Fall eine Zeichenfolge in einer golang Vorlage string.ToUpper wie:Golang Vorlage: Verwenden Sie Rohr in Groß String

{{ .Name | strings.ToUpper }} 

Aber dies nicht funktioniert, weil strings keine Eigenschaft meiner Daten ist.

Ich kann strings Paket nicht importieren, weil das warnt mich, dass es nicht verwendet wird.

Hier das Script: http://play.golang.org/p/7D69Q57WcN

+1

Das beantwortet die Frage nicht, aber: Wenn Sie HTML mit dieser Vorlage rendern, denken Sie darüber nach, ob die Oberschale nur eine Darstellung darstellt. Wenn dies der Fall ist, verwenden Sie stattdessen CSS 'text-transform: capitalize' - dies ist sogar [sprachsensitiv] (https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform). – djd

Antwort

28

Nur eine FuncMap wie folgt verwenden (playground) die ToUpper Funktion in Ihre Vorlage zu injizieren.

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()) 
}