GO模板引擎的使用

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【6月更文挑战第12天】

解析模板文件

func (t *Template) Parse(src string) (*Template, error)
func ParseFiles(filenames ...string) (*Template, error)
func ParseGlob(pattern string) (*Template, error)

当然也可以使用func New(name string) *Temolate函数创建一个名为name的模板,然后对其调用方法去解析字符串或模板文件。
模板渲染
渲染模板简单来说就是使用去填充模板。

func (t *Template) Execute(wr io.Writer, data interface{
   
   }) error
func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{
   
   }) error

举一个例子:
我们按照GO模板语法创建一个hello.html的模板文件,当然也可以创建hello.tmpl或者hello.tpl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>Hello,{
   
   {
   
    .Name }}</p>
<p>Hello,{
   
   {
   
    .Gender }}</p>
<p>Hello,{
   
   {
   
    .Age }}</p>
</body>
</html>

然后进行解析和渲染。
创建一个main.go文件。

type UserInfo struct {
   
   
    Name   string
    Gender string
    Age    int
}

func sayHello(w http.ResponseWriter, r *http.Request) {
   
   
    // 解析指定文件生成模板对象
    tmpl, err := template.ParseFiles("./hello.html")
    if err != nil {
   
   
        fmt.Println("create template failed, err:", err)
        return
    }
    // 利用给定数据渲染模板,并将结果写入w
    user := UserInfo{
   
   
        Name:   "林苏泽",
        Gender: "男",
        Age:    18,
    }
    tmpl.Execute(w, user)
}

// main.go

func main() {
   
   
    http.HandleFunc("/", sayHello)
    err := http.ListenAndServe(":9000", nil)
    if err != nil {
   
   
        fmt.Println("HTTP server failed,err:", err)
        return
    }
}

然后运行访问9000端口
先build,然后运行生成exe文件即可。每次修改都需要重新build一边。
image.png

其中{ {.}}是要替换的内容,就是需要渲染的地方。
我们传入变量是map时,也可以通过模板文件.根据key来渲染。

// 利用给定数据渲染模板,并将结果写入w
    user := UserInfo{
   
   
        Name:   "林苏泽",
        Gender: "男",
        Age:    18,
    }
    m1 := map[string]interface{
   
   }{
   
   
        "Name":   "林素",
        "Gender": "男",
        "Age":    18,
    }
    tmpl.Execute(w, map[string]interface{
   
   }{
   
   
        "user": user,
        "m1":   m1,
    })
}
目录
相关文章
|
SQL 开发框架 安全
Go Web编程实战(10)----模板引擎库text/template包的使用
Go Web编程实战(10)----模板引擎库text/template包的使用
297 0
Go Web编程实战(10)----模板引擎库text/template包的使用
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(下)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(上)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
Go Web 编程入门:Go pongo2 模板引擎(上)
|
15天前
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。
|
12天前
|
Go
go语言map、实现set
go语言map、实现set
14 0
|
12天前
|
Go
go语言数组与切片
go语言数组与切片
17 0
|
5天前
|
存储 Go API
一个go语言编码的例子
【7月更文挑战第2天】本文介绍Go语言使用Unicode字符集和UTF-8编码。Go中,`unicode/utf8`包处理编码转换,如`EncodeRune`和`DecodeRune`。`golang.org/x/text`库支持更多编码转换,如GBK到UTF-8。编码规则覆盖7位至21位的不同长度码点。
70 1
一个go语言编码的例子
|
8天前
|
JSON 算法 测试技术
在go语言中调试程序
【6月更文挑战第29天】Go语言内置`testing`包支持单元测试、基准测试和模糊测试。`go test`命令可执行测试,如`-run`选择特定测试,`-bench`运行基准测试,`-fuzz`进行模糊测试。
17 2
在go语言中调试程序
|
14天前
|
存储 中间件 Go
在go语言服务中封装路由和示例
【6月更文挑战第23天】本文介绍golang后端按协议处理、中间件(一次性与每次请求执行)划分、以及服务架构Controller、Logic/Service、DAO/Repository和Routers划分。代码仓库在GitHub上提供。使用框架简化了交互和处理。后续章节深入探讨服务构建。
107 5
在go语言服务中封装路由和示例
|
6天前
|
安全 Go
Go语言的iota关键字有什么用途?
**Go语言中的`iota`是常量生成器,用于在`const`声明中创建递增的常量。`iota`在每个新的`const`块重置为0,然后逐行递增,简化了枚举类型或常量序列的定义。例如,定义星期枚举:** ```markdown ```go type Weekday int const ( Sunday Weekday = iota // 0 Monday // 1 Tuesday // 2 ... ) ``` 同样,`iota`可用于定义不同组的常量,如状态码和标志位,保持各自组内的递增,提高代码可读性。