模板
and功能不像Go 操作符那样进行短路评估
&&。
在调用
and函数之前先评估函数的参数。
.User.Registered即使
.User为nil ,也总是对表达式求值。
解决方法是使用嵌套
if:
{{if .User}}{{if .User.Registered}} {{end}}{{end}}您可以避免嵌套
if或
with使用模板函数:
func isRegistered(u *user) bool { return u != nil && u.Registered}const tmpl = `{{if isRegistered .User}}registered{{else}}not registered{{end}}`t := template.Must(template.New("").Funcs(template.FuncMap{"isRegistered": isRegistered}).Parse(tmpl))游乐场的例子



