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包的使用
317 0
Go Web编程实战(10)----模板引擎库text/template包的使用
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(下)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
|
Go Python
Go Web 编程入门:Go pongo2 模板引擎(上)
模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。
Go Web 编程入门:Go pongo2 模板引擎(上)
|
10天前
|
程序员 Go PHP
为什么大部分的 PHP 程序员转不了 Go 语言?
【9月更文挑战第8天】大部分 PHP 程序员难以转向 Go 语言,主要因为:一、编程习惯与思维方式差异,如语法风格和编程范式;二、学习成本高,需掌握新知识体系且面临项目压力;三、职业发展考量,现有技能价值及市场需求不确定性。学习新语言虽有挑战,但对拓宽职业道路至关重要。
40 10
|
8天前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。
|
10天前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
33 10
|
10天前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
7天前
|
存储 监控 数据可视化
Go 语言打造公司监控电脑的思路
在现代企业管理中,监控公司电脑系统对保障信息安全和提升工作效率至关重要。Go 语言凭借其高效性和简洁性,成为构建监控系统的理想选择。本文介绍了使用 Go 语言监控系统资源(如 CPU、内存)和网络活动的方法,并探讨了整合监控数据、设置告警机制及构建可视化界面的策略,以满足企业需求。
25 1
|
14天前
|
安全 大数据 Go
深入探索Go语言并发编程:Goroutines与Channels的实战应用
在当今高性能、高并发的应用需求下,Go语言以其独特的并发模型——Goroutines和Channels,成为了众多开发者眼中的璀璨明星。本文不仅阐述了Goroutines作为轻量级线程的优势,还深入剖析了Channels作为Goroutines间通信的桥梁,如何优雅地解决并发编程中的复杂问题。通过实战案例,我们将展示如何利用这些特性构建高效、可扩展的并发系统,同时探讨并发编程中常见的陷阱与最佳实践,为读者打开Go语言并发编程的广阔视野。
|
11天前
|
存储 Shell Go
Go语言结构体和元组全面解析
Go语言结构体和元组全面解析