Go text/template如何将布尔值转换为0/1整数?
在Go的text/template中将布尔值转换为整数的方法
方法一:使用内置条件判断(无需额外依赖)
直接通过模板的if/else结构判断布尔值,输出对应的整数:
{{if .}}1{{else}}0{{end}}
用goproc工具测试的示例:
$ echo false | goproc -e '{{.}} => {{if .}}1{{else}}0{{end}}' false => 0 $ echo true | goproc -e '{{.}} => {{if .}}1{{else}}0{{end}}' true => 1
方法二:注册自定义函数(Go代码中使用模板时)
如果是在自己的Go项目里使用text/template,可以注册一个自定义转换函数,让模板调用:
package main import ( "os" "text/template" ) func boolToInt(b bool) int { return map[bool]int{true: 1, false: 0}[b] } func main() { // 注册自定义函数 funcMap := template.FuncMap{ "boolToInt": boolToInt, } tmpl := template.Must(template.New("").Funcs(funcMap).Parse("{{.}} => {{boolToInt .}}")) // 测试false值 _ = tmpl.Execute(os.Stdout, false) println() // 测试true值 _ = tmpl.Execute(os.Stdout, true) }
运行这段代码会输出:
false => 0 true => 1
内容的提问来源于stack exchange,提问作者dolmen
相关产品推荐
相关产品推荐

