text/template
type Tut struct{
    Title string
    Author string
}

先定义数据结构,我们可能总是习惯用我们熟知语言例如 java 中对应的类来理解 go 语言中结构,这就错了,在学习一门外语的时候我们总是在头脑中先翻译为中文,然后通过中文含义去理解外语。这样做是不对的,当然我们中其他语言语法作为基础去学习 go 语言,当然也就是失去 go 语言本身含义和他的美了。

const tmpl = `Tut - Title: {{.Title}}, Author: {{.Author}}`
{{.Title}}{{.Author}}
t := template.New("tut")
    t, err := t.Parse(tmpl)
tut*Template
func (t *Template) ParseFiles(filenames ...string) (*Template, error)

Execute 方法结构 tut 传入解析过模板,然后处理完的输出到输出编辑器 os.Stdout 进行输出。

if err:=t.Execute(os.Stdout,tut); err != nil{
        log.Fatal("Execute:",err)
        return
    }
import(
    "os"
    "log"
    "text/template"
)

type Tut struct{
    Title string
    Author string
}
const tmpl = `Tut - Title: {{.Title}}, Author: {{.Author}}`
func main() {
    tut := Tut{
        "angular basic tut",
        "zidea",
    }

    t := template.New("tut")
    t, err := t.Parse(tmpl)

    if err != nil {
        log.Fatal("Parse:", err)
        return
    }

    if err:=t.Execute(os.Stdout,tut); err != nil{
        log.Fatal("Execute:",err)
        return
    }
}
Tut - Title: angular basic tut, Author: zideajangwoodeMacBook-Air:tmpla jangwoo$
  1. 定义包换结构数据占位符的模板文本
  2. 通过调用```template.New 函数来创建 (*Template)
  3. 通过调用 Parse 方法解析字符串解析为模板
  4. Execute 将数据对象传入解析好的模板中渲染出输出形式
package main

import(
    "os"
    "log"
    "text/template"
)

type Tut struct{
    Title string
    Author string
}
const tmpl = `Tut list
{{range .}}
    Title: {{.Title}}, Author: {{.Author}}
{{end}} 
`
func main() {
    tuts := []Tut{
        {"angular basic tut","zidea"},
        {"vue basic tut","zidea"},
    }

    t := template.New("tut")
    t, err := t.Parse(tmpl)

    if err != nil {
        log.Fatal("Parse:", err)
        return
    }

    if err:=t.Execute(os.Stdout,tuts); err != nil{
        log.Fatal("Execute:",err)
        return
    }
}
{{range .}}
const tmpl = `Tut list
{{range .}}
    Title: {{.Title}}, Author: {{.Author}}
{{end}} 
`
defineExecuteTemplateTT{{.}}
import(
    "log"
    "os"
    "text/template"
)

func main() {
    t,err := template.New("test").Parse(`{{define "T"}}Hello, {{.}} {{end}}`)
    err = t.ExecuteTemplate(os.Stdout,"T","World")
    if err != nil{
        log.Fatal("Execute",err)
    }
}
Hello, World
{{$tut := "angular basic tut"}} {{$tut}}
t,err := template.New("test").Parse(`{{define "T"}}{{$tut := "angular basic tut"}} {{$tut}} Hello, {{.}} {{end}}`)
    err = t.ExecuteTemplate(os.Stdout,"T","World")
    if err != nil{
        log.Fatal("Execute",err)
    }