go进阶篇gin框架系列三

一、模板引擎的语法

{{.}}

模板语法都包含在{{}}中间,其中{{.}}中的点表示当前对象。

当我们传入一个结构体对象时,我们可以根据.来访问结构体的对应字段。

pipeline

pipeline是指产生数据的操作。比如{{.}}{{.Name}}等。Go的模板语法中支持使用管道符号|链接多个命令,用法和unix下的管道类似:|前面的命令会将运算结果(或返回值)传递给后一个命令的最后一个位置。

注意:并不是只有使用了|才是pipeline。Go的模板语法中,pipeline的概念是传递数据,只要能产生数据的,都是pipeline

变量

我们还可以在模板中声明变量,用来保存传入模板的数据或其他语句生成的结果。

例如:其中$obj是变量的名字

$obj := {{.}}

移除空格

有时候我们在使用模板语法的时候会不可避免的引入一下空格或者换行符,这样模板最终渲染出来的内容可能就和我们想的不一样,这个时候可以使用{{-语法去除模板内容左侧的所有空白符号, 使用-}}去除模板内容右侧的所有空白符号。

例如:-要紧挨{{}},同时与模板值之间需要使用空格分隔

{{- .Name -}}

条件判断

{{if pipeline}} T1 {{end}}

{{if pipeline}} T1 {{else}} T0 {{end}}

{{if pipeline}} T1 {{else if pipeline}} T0 {{end}}

range

Go的模板语法中使用range关键字进行遍历,有以下两种写法,其中pipeline的值必须是数组、切片、字典或者通道。

{{range pipeline}} T1 {{end}}
如果pipeline的值其长度为0,不会有任何输出

{{range pipeline}} T1 {{else}} T0 {{end}}
如果pipeline的值其长度为0,则会执行T0。

二、实战

2.1 模板语法

package main

import (
	"fmt"
	"html/template"
	"net/http"
)

/**
go 模板语法
*/
func main() {
	http.HandleFunc("/user", speak)
	err := http.ListenAndServe(":8082", nil)
	if err != nil {
		fmt.Println("启动失败", err)
		return
	}

}

func speak(w http.ResponseWriter, r *http.Request) {
	// 定义模板

	// 解析模板
	t, err := template.ParseFiles("../go_04.tmpl")

	if err != nil {
		fmt.Println("读取文件失败,err:", err)
		return
	}

	// 渲染模板
	//str := "钟渊学习go"
	u1 := User{
		Name:   "tom",
		gender: "男",
		Age:    18,
	}

	fmt.Println(u1)

	m1 := map[string]interface{}{
		"name": "李明",
		"age":  20,
	}

	hobbyList := []string{
		"篮球",
		"足球",
		"乒乓球",
	}

	t.Execute(w, map[string]interface{}{
		"u1":    u1,
		"m1":    m1,
		"hobby": hobbyList,
	})

}

type User struct {
	Name   string
	gender string
	Age    int
}
go_04.tmpl文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <title>模板引擎语法练习</title>
</head>
<body>
<p>u1</p>

<div>{{ .u1 }}</div>
<p>m1</p>
<div>{{ .m1 }}</div>

<hr/>

{{$v1 :=100}}
<hr/>
{{ if $v1}}
{{$v1}}
{{else}}
没有数据
{{end}}

<hr>
{{.hobby}}
<hr>

{{range $index,$h :=.hobby}}
<p>{{$index }} -{{$h}}</p>
{{end}}
</body>
</html>

   效果展示

 

2.2 模板嵌套

package main

import (
	"fmt"
	"html/template"
	"net/http"
)

/**
自定义函数
*/
func main() {

	http.HandleFunc("/user", f5)
	http.HandleFunc("/temp", temp)
	err := http.ListenAndServe(":8083", nil)
	if err != nil {
		fmt.Println("启动失败", err)
		return
	}

}

func f5(w http.ResponseWriter, r *http.Request) {

	// 自定义一个函数
	speak := func(name string) (string, error) {
		return name + "说他喜欢go语言", nil
	}

	//定义模板
	// 解析模板
	t := template.New("f5.tmpl")
	t.Funcs(template.FuncMap{
		"speak": speak,
	})
	_, err := t.ParseFiles("../f5.tmpl")
	if err != nil {
		fmt.Println("解析模板失败", err)
	}
	//渲染模板
	str := "钟渊"
	t.Execute(w, str)
}

func temp(w http.ResponseWriter, r *http.Request) {
	// 定义模板

	// 解析模板
	t, err := template.ParseFiles("../t.tmpl", "../ul.tmpl")
	if err != nil {
		fmt.Println("解析模板失败", err)
		return
	}
	// 渲染模板
	str := "钟渊"
	t.Execute(w, str)

}
f5.tmpl文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <title>自定义模板</title>
</head>
<body>
<p>u1</p>
<div>{{speak .}}</div>
</body>
</html>
t.tmpl文件
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>tmpl test</title>
</head>
<body>
    <p>{{.}} 学习嵌套template语法</p>
    <h1>测试嵌套template语法</h1>
    <hr>
    {{template "ul.tmpl"}}
    <hr>
    {{template "ol.tmpl"}}
</body>
</html>

{{ define "ol.tmpl"}}
<ol>
    <li>吃饭</li>
    <li>睡觉</li>
    <li>打豆豆</li>
</ol>
{{end}}
ul.tmpl文件
<ul>
    <li>注释</li>
    <li>日志</li>
    <li>测试</li>
</ul>

效果展示

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Go Web开发进阶实战(Gin框架)》是一本针对Go语言的Web开发者的进阶实战书籍。该书主要以Gin框架作为核心内容,通过实际案例的讲解,帮助读者深入理解和掌握Gin框架的使用技巧。 Gin框架是一个轻量级、高性能的Go语言Web框架,提供了许多强大的功能和特性,如路由、中间件、模板渲染等。本书主要介绍了Gin框架的基本概念和用法,并通过实战项目的方式,帮助读者实际运用Gin框架来构建Web应用。 该书内容包括了Gin框架的安装与配置、路由和中间件的使用、参数的绑定与验证、错误处理、模板渲染、文件上传与下载、会话管理等方面的知识。通过对这些知识点的深入理解和实践,读者将能够掌握Gin框架的核心功能,并学会如何在实际项目中应用。 此外,本书还通过实战案例来演示如何使用Gin框架构建不同类型的Web应用,如博客系统、用户认证、API接口等。每个案例都包含详细的代码实现和讲解,读者可以通过跟随案例一步一步地实现,并深入理解Gin框架在实际项目中的应用场景。 总之,通过《Go Web开发进阶实战(Gin框架)》这本书的学习,读者可以系统地学习和掌握Gin框架的使用,并通过实战案例的实践来提升自己的Web开发能力。无论是初学者还是有一定经验的开发者,都能够从中受益,快速掌握Go语言Web开发中使用Gin框架的技巧和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值