package main import ( "strings" "text/template" ) type Field struct { Name string Type string Docs string } type Struct struct { SourcePath string Name string Filename string Header string Fields []Field } var structDocsTemplate = template.Must(template.New("structDocsTemplate"). Funcs(template.FuncMap{ "indent": indent, }). Parse(` {{ .Header -}} {{range .Fields}} - ` + "`" + `{{ .Name}}` + "`" + ` ({{ .Type }}) - {{ .Docs | indent 4 }} {{- end -}}`)) func indent(spaces int, v string) string { pad := strings.Repeat(" ", spaces) return strings.Replace(v, "\n", "\n"+pad, -1) }