package renderer import ( "fmt" "html/template" "log" "net/url" "reflect" "time" ) var ( funcMap = template.FuncMap{ "query": query, "convertDate": convertDate, "model": model, } ) func getType(myvar interface{}) (res string) { t := reflect.TypeOf(myvar) for t.Kind() == reflect.Ptr { t = t.Elem() res += "*" } return res + t.Name() } func query(values ...string) template.URL { var urlValues url.Values urlValues = make(url.Values) urlValues.Set("format", "html") for i := 0; i < len(values); i += 2 { urlValues.Add(values[i], values[i+1]) } return template.URL(urlValues.Encode()) } func convertDate(t time.Time) string { return fmt.Sprintf("%d-%02d-%02d", t.Year(), t.Month(), t.Day()) } func model(value interface{}) string { log.Println(value) return getType(value) }