Golang模板:使用管道将字符串转换为大写

19

我想在 Go 语言模板中使用 string.ToUpper 将一个字符串转换为大写:

{{ .Name | strings.ToUpper  }}

但这样行不通,因为strings不是我数据的一个属性。

我无法导入strings包,因为它会警告我它没有被使用。

以下是脚本链接: http://play.golang.org/p/7D69Q57WcN


4
这不是回答问题的内容,但是:如果你正在使用此模板呈现HTML,请考虑大写字母是否只是展示用的。如果是的话,使用CSS的 text-transform: capitalize 替代 - 这甚至是语言感知的 - djd
1个回答

52

只需像这样使用 FuncMap playground ),将 ToUpper 函数注入您的模板中。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接