Следующее некорректно показывает «ноль» для значений 0
, но я хочу, чтобы это делалось только для точно nil
.
package main
import (
"os"
"text/template"
)
type thing struct {
Value interface{}
}
func main() {
tmpl, _ := template.New("test").Parse("{{if .Value }} {{.Value}} {{else}} [null] {{end}}\n")
tmpl.Execute(os.Stdout, thing{Value: "hi"}) // outputs hi
tmpl.Execute(os.Stdout, thing{Value: nil}) // outputs [null]
tmpl.Execute(os.Stdout, thing{Value: 0}) // outputs [null] - should output 0
tmpl.Execute(os.Stdout, thing{Value: 2}) // outputs 2
}
Ссылка на игровую площадку: https://play.golang.org/p/Gg8uBCOb2vE
Как сделать так, чтобы вместо этого показывалось значение 0
?
.Value
- это interface{}
, которое в проблемном случае содержит int
, но может содержать что угодно.
Показывать содержимое по умолчанию в шаблоне, если объект равен нулю, в противном случае показывать на основе установленного свойства близко, но не совсем то же самое