template 基础

template example

/**
print person
**/

package main

import (
    "fmt"
    "html/template"
    "os"
)


type Person struct {
    Name string
    Age int
    Emails []string
    Jobs []*Job
}

type Job struct {
    Employer string
    Role    string
}

// 模版里面出现换行则输出结果也会换行
const templ = `
The age is {{.Age}}.
{{range .Emails}}
    An email is {{.}}
{{end}}

{{with .Jobs}}
    {{range .}}
        An employer is {{.Employer}}
        and the role is {{.Role}}
    {{end}}
{{end}}
`


func main() {
    job1 := Job{Employer: "Monash", Role: "Honorary"}
    job2 := Job{Employer: "Box Hill", Role: "head of HE"}

    person := Person {
        Name: "jan",
        Age: 50,
        Emails: []string{"jan@newmarch.name", "jan.newmarch@gmail.com"},
        Jobs: []*Job{&job1, &job2},
    }

    t := template.New("Person template")
    t, err := t.Parse(templ)
    checkError(err)

    // 通过模版将 person 的内容输出到标准输出
    err = t.Execute(os.Stdout, person)
    checkError(err)
}


func checkError(err error) {
    if err != nil {
        fmt.Println("Fatal error", err.Error())
        os.Exit(1)
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容