go template使用

2023-10-26

 示例:

func tmpl(w http.ResponseWriter, r *http.Request) {
	t1, err := template.ParseFiles("test.html")
	if err != nil {
		log.Fatal(err)
	}
	t1.Execute(w, "hello world")
}

//test html template
func test1() {
	server := http.Server{
		Addr: "127.0.0.1:8080",
	}
	http.HandleFunc("/tmpl", tmpl)
	server.ListenAndServe()
}

type Person struct {
	Name string
	Age  int
}

//test
func test2() {
	p := Person{Name: "skay", Age: 18}
	tmpl, err := template.New("test").Parse("Name: {{.Name}}, Age: {{.Age}}")
	if err != nil {
		log.Fatal(err)
	}
	tmpl.Execute(os.Stdout, p)
}

type Friend struct {
	Fname string
}

type Human struct {
	UserName string
	Emails   []string
	Friends  []*Friend
}

func test3() {
	f1 := &Friend{Fname: "Tom"}
	f2 := &Friend{Fname: "Jack"}
	t := template.New("test")
	t = template.Must(t.Parse(
		`hello {{.UserName}}!
{{ range .Emails }}
an email {{ . }}
{{- end }}
{{ with .Friends }}
{{- range . }}
my friend name is {{.Fname}}
{{- end }}
{{ end }}`))

	p := Human{UserName: "Lily", Emails: []string{"ai@163.com", "ai@qq.com"}, Friends: []*Friend{f1, f2}}
	t.Execute(os.Stdout, p)
}

func test4() {
	tx := template.Must(template.New("hh").Parse(
		`{{range $x := . -}}
			{{$y := .}}
			{{println $x $y}}
		{{- end}}`))
	s := []int{1, 2, 3, 4, 5}
	_ = tx.Execute(os.Stdout, s)
}

func test5() {
	tx := template.Must(template.New("hh").Parse(
		`{{range $x := . -}}
		{{$y := 333}}
		{{- if (gt $x 33)}}{{println $x $y ($z := 444)}}{{- end}}
		{{- end}}
		`))
	s := []int{11, 22, 33, 44, 55}
	_ = tx.Execute(os.Stdout, s)
}

func test6() {
	t1 := template.New("test1")
	tmpl, err := t1.Parse(
		`
{{- define "T1"}}ONE {{println .}}	{{end}}
{{- define "T2"}}{{template "T1" $}} {{end}}
{{- template "T2" . -}}	
	`)
	if err != nil {
		log.Fatal(err)
	}
	tmpl.Execute(os.Stdout, "hello world")
}

//range...end
func test7() {
	tx := template.Must(template.New("hh").Parse(
		`{{range $key,$value := . -}}
			{{println $key $value}}
		 {{- end}}
	`))
	tx.Execute(os.Stdout, []int{11, 22, 33, 44})
}

//define template
func test8() {
	t1 := template.New("test1")
	tmpl, _ := t1.Parse(
		`{{- define "T1"}}ONE {{println .}}{{end}}
		 {{- define "T2"}}TWO {{println .}}{{end}}
		 {{- define "T3"}}{{template "T1"}}{{template "T2" "haha"}}{{end}}
		 {{- template "T3" -}}
	`)
	_ = tmpl.Execute(os.Stdout, "hello world")
}

//test html template
func test9() {
	server := http.Server{
		Addr: "127.0.0.1:8080",
	}
	http.HandleFunc("/tmpl2", test9Hanler)
	server.ListenAndServe()
}

//define html
func test9Hanler(w http.ResponseWriter, r *http.Request) {
	t, err := template.ParseFiles("t1.html")
	if err != nil {
		log.Fatal(err)
	}
	t.Execute(w, "Hello World!")
}

t1.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=9">
    <title>Go Web Programming</title>
</head>

<body>
    <div> This is t1.html before</div>
    <div>This is the value of the dot in t1.html - [{{ . }}]</div>
    <hr />
    {{ template "t2.html" }}
    <hr />
    <div> This is t1.html after</div>
</body>

</html>

{{define "t2.html"}}
<div style="">
    This is t2.html<br/>
    This is the value of the dot in t2.html - [{{ . }}]
</div>
{{end}}

test.html

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Go Web</title>
</head>

<body>
    {{ . }}
</body>

</html>

以上内容整理自:https://www.cnblogs.com/sunsky303/p/11942030.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go template使用 的相关文章

随机推荐

  • Request和ThreadLocal

    Web容器中有三个周期 request Httpsession application 其中request是客户端发出的一个请求 这个request的载体就是一个 线程 实际等同于一个线程的生命周期 Request是封装在线程上面一个抽象概
  • windows下pip安装mysqlclient失败

    环境 windows8家庭版 python3 6 7 在虚拟环境中pip install mysqlclient报错 解决方案 下载地址 ctrl f键入mysqlclient 找到对应的版本即可 博主是python3 6 7 所以选择了倒
  • 2021 程序媛跳槽记:学习计划篇

    三妹跳槽系列文章 2021 程序媛跳槽记 百度阿里字节等各大厂面经篇 2021 程序媛跳槽记 必刷LeetCode算法题 附解题报告 坦白说 我这个人不算聪明 基础也不咋样 这次跳槽我一开始是很没信心的 甚至想把这次尝试当做试水 如果受打击
  • Go_数组遍历、最大值、求和、多维数组

    数组 数组就是用来存储数据的容器 存储多个数据时数据类型要一致 如果想要保存任意类型数据 需要声明为接口类型数组 数组定义完成后 可以对数组进行赋值操作 数组是通过下标来进行操作的 下标的范围是从0开始到数组长度减1的位置 特点 数组是一种
  • 关闭windows defender教程

    由于windows自带的防护软件在后台占用大量内存 然后可以使用其他第三方软件来 然后本人使用的是火绒 这里平时的内存占用了不到100MB 然后其实这里本来应该插入一个windows defender的占用内存 我记得是在200 MB 反正
  • git 上传 github报错 (Permission denied)

    文章目录 结论 起因 新建github仓库 本地仓库初始化 结论 ssh config 中 Host 值可以随意写 cat git config 中 remote origin url git B test demo git url 值 后
  • 微服务讲堂--【5】系统自举

    这里的 系统自举 借用了操作系统的概念 在操作系统启动之前 计算机要先加载自举程序 再由自举程序加载操作系统的启动程序 整个详细过程不在这里描述 可以在网络查阅相关资料 为什么要在微服务系统中特别提及系统自举这个概念呢 因为这内容很重要 而
  • Unity 勾选development Build 区别,引起的Bug,记录一下

    Unity 勾选development Build 区别 引起的Bug 记录一下 问题 编辑器运行正常 安卓真机 Build And Run 就出现了奇怪的问题 类似数组数据出现了误差 勾选development Build 想要真机调试的
  • 第十四届蓝桥杯校内模拟赛(第二期) C++题解分享

    本人是在学校机房参加的第二期模拟赛有些题目没有忘海涵 若有什么好的建议可以提出来来分享这是本小白第一篇CSDN希望能帮助到大家 第一题没啥好说的就是直接暴力枚举 这边直接上代码 稍微注释 答案 2048 include
  • CTF—web题库笔记(难度2)

    CTF web题库笔记 难度1 CTF web题库笔记 难度4 本篇文章共12道题 目录如下 目录 1 warmup 2 supersqli 3 Web php include 4 php rce 5 Web php unserialize
  • HDFS分布式文件系统(2)Java API操作HDFS

    文章目录 1 创建Maven项目 2 添加相关依赖 3 创建日志属性文件 4 启动集群HDFS服务 5 在HDFS上创建文件 6 写入HDFS文件 6 1 将数据直接写入HDFS文件 6 2 将本地文件写入HDFS文件 7 读取HDFS文件
  • Java中使用this调用构造方法

    在 Java 中 可以使用this 关键字来调用同一个类中的其他构造方法 这种方式通常被用于避免代码重复 或者在构造方法中需要进行额外的初始化操作时 在一个类中 可以定义多个不同参数列表的构造方法 如下所示 public class MyC
  • Submitting multiple batch scripts to LSF

    原文链接 https hpc ncsu edu Documents lsf scripts php Many workflows involve submitting multiple compute jobs with slightly
  • D盘新建删除移动文件需要管理员权限怎么办?

    问题描述 好像是我在进行一次d盘大瘦身之后 Program Files中的进行新建 删除时候就变得需要管理员权限了 但是d盘的其他文件夹就可以正常操作 唯独这一个Program Files 这让我很不爽 所以就想办法解决嘛 解决办法 网上说
  • 支付宝商户支付接口接入流程

    支付宝商户支付接口接入流程 详细说明支付宝商户支付接口接入流程和注意事项 便于大家在对接过程中少走弯路 实现快速对接 目前网上也有资料 这些资料不够完整全面 导致在对接过程中也会出现一些问题 其中支付功能主要包括 支付 APP支付 WAP支
  • linux如何获得宝塔账号密码信息

    在ssh终端输入 etc init d bt default 会得到如下信息
  • 14 Binder通信之应用层AIDL实现示例

    Binder通信之应用层AIDL实现示例 一 什么是AIDL AIDL Android Interface Definition Language 即Android接口定义语言 Android系统中 每个进程都运行在一块独立的内存中 在其中
  • 最小生成树的权值之和-Prim算法

    问题描述 已知含有n个顶点的带权连通无向图 采用邻接矩阵存储 邻接矩阵以三元组的形式给出 只给出不包括主对角线元素在内的下三角形部分的元素 且不包括不相邻的顶点对 请采用Prim算法 求该连通图从1号顶点出发的最小生成树的权值之和 输入形式
  • 8-NodeJS基础

    Node Node是一个基于Chrome V8引擎的 javaScript代码运行环境 什么软件可以运行javaScript 它就是javaScript的运行环境 Node js是运行在代码环境之上的语言 由ECMAScript 和模块的A
  • go template使用

    示例 func tmpl w http ResponseWriter r http Request t1 err template ParseFiles test html if err nil log Fatal err t1 Execu