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

huangapple go评论85阅读模式
英文:

Golang template : Use pipe to uppercase string

问题

我想在golang模板中使用string.ToUpper将字符串转换为大写,类似于:

{{ .Name | strings.ToUpper }}

但是这样不起作用,因为strings不是我的数据的属性。

我不能导入strings包,因为它会警告我说它没有被使用。

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

英文:

I want to upper case a string in a golang template using string.ToUpper like :

{{ .Name | strings.ToUpper  }}

But this doesn't works because strings is not a property of my data.

I can't import strings package because the warns me that it's not used.

Here the script :
http://play.golang.org/p/7D69Q57WcN

答案1

得分: 50

只需像这样使用FuncMapplayground)将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 }}"))

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

	tmpl.Execute(&result, templateData)
	fmt.Println(result.String())
}
英文:

Just use a FuncMap like this (playground) to inject the ToUpper function into your template.

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

huangapple
  • 本文由 发表于 2014年1月10日 05:05:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/21031108.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定