GO模板引擎的使用

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【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包的使用
340 0
Go Web编程实战(10)----模板引擎库text/template包的使用
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(下)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(上)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
Go Web 编程入门:Go pongo2 模板引擎(上)
|
16天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
26 7
|
16天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
16天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
92 71
|
15天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
100 67
|
18天前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
88 62
|
20天前
|
并行计算 安全 Go
Go语言中的并发编程:掌握goroutines和channels####
本文深入探讨了Go语言中并发编程的核心概念——goroutine和channel。不同于传统的线程模型,Go通过轻量级的goroutine和通信机制channel,实现了高效的并发处理。我们将从基础概念开始,逐步深入到实际应用案例,揭示如何在Go语言中优雅地实现并发控制和数据同步。 ####
|
16天前
|
存储 Go
go语言中映射
go语言中映射
32 11