dongshixingga7900 2019-02-14 02:48
浏览 6
已采纳

带字符串的模板继承

I have a few small .html files that I parse like:

template.Must(
    template.New("test").
        ParseFiles(
            "templates/f1.html",
            "templates/f2.html",
            "templates/f3.html",
        ),
)

These are all very small files and, for example, I'd like to make these just strings to make my code easier but how do I do the same type of template inheritance but with strings? All I see is the Parse method, but that only takes 1 string:

func (t *Template) Parse(text string) (*Template, error)

My strings:

f1 := `Hi there {{template "content" .}}`
f2 := `{{define "content"}}bob {{template "content2" .}}{{end}}`
f3 := `{{define "content2"}}ross{{end}}`

Not sure how to make these "play" together. (This is a simplified example of what I'm doing and these strings are used in multiple places so doesn't make sense to combine them all to 1).

  • 写回答

1条回答 默认 最新

  • douyun3799 2019-02-14 03:23
    关注

    Try:

    const (
        f1 = `Hi there {{template "content" .}}`
        f2 = `{{define "content"}}bob {{template "content2" .}}{{end}}`
        f3 = `{{define "content2"}}ross{{end}}`
    )
    
    func main() {
        t := template.New("test")
    
        t.Parse(f1)
        t.Parse(f2)
        t.Parse(f3)
    
        t.Execute(os.Stdout, nil)
    }
    

    produces: Hi there bob ross

    playground version.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?