[13th][Day16] tamplete

golang template
golang stdlib(标准函式库)中提供两种跟 template 有关的 package

text/template    
html/template

来看看关於 html/template 的官方解释

https://golang.org/pkg/html/template/

Package template implements data-driven templates for generating textual output.

Package template 为了产生文本,实现了资料驱动模板

To generate HTML output, see package html/template, which has the same interface as this package but automatically secures HTML output against certain attacks.

为了产生 HTML 输出,可以看看 package html/template ,它与 text/template 拥有一样的接口,但会自动保护HTML输出,阻挡一些攻击

这麽一大串的英文主要讲得也就是 资料驱动编程这东东

而实际上的应用 ... 就直接进入 code 的部分吧

首先在 main 的外面宣告一个模板,他是一个 string

var demoString = "noChange1: {{.Value1}} \nnoChange2: {{.Value2}}"

我用了 \n 来换行

宣告一个 struct

type demoStruct struct {
	Value1 int64
	Value2 int64
}

在 func main() 中宣告一个 struct 值 的 址
注意:demoPointer 的型态为 *demoStruct

    demoPointer := &demoStruct{
		Value1: 9487,
		Value2: 9453,
	}

宣告一个 byte buffer

var tpl bytes.Buffer

使用 package html/template 的 must 方法产生 *template.Template
Parse 後,再使用 t.Execute 方法就可以完成给值

	t := template.Must(template.New("").Parse(demoString))
	if err := t.Execute(&tpl, demoPointer); err != nil {
		fmt.Println(err)
		return
	}

最後,终於可以用 fmt.Println 印出来罗

完整程序码

package main

import (
	"bytes"
	"fmt"
	"html/template"
)

var demoString = "noChange1: {{.Value1}} \nnoChange2: {{.Value2}}"

type demoStruct struct {
	Value1 int64
	Value2 int64
}

func main() {
	demoPointer := &demoStruct{
		Value1: 9487,
		Value2: 9453,
	}

	var tpl bytes.Buffer
	t := template.Must(template.New("").Parse(demoString))
	if err := t.Execute(&tpl, demoPointer); err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(tpl.String())
}
输出为

noChange1: 9487 
noChange2: 9453
注意变数的大小写会影响作用域&传递范围


<<:  Day18 Helm

>>:  Day12 CSS基础设定介绍_1

Mobile Number Tracker Online

It is impossible to track a phone's exact location...

Day 8:先别急着撰写文章,你听过 Markdown 吗?

相信有人已经迫不及待要撰写文章了,不过在这之前,我们先来介绍一下 Markdown 这个标记语言。 ...

前端藏宝图 - 宝藏在哪儿?

前言 第一次参加铁人赛,很单纯的只是将自己学习的内容做整理记录,有很多不周全的地方,谢谢其他铁人们的...

聊招募前,先问问你了解自己吗?

成为公司的一份子大都是经由招募流程而加入的,但某一天团队需要扩大或是人手不足,而你刚好有机会可以参与...

资安这条路 31 - [WebSecurity] 资源分享

感谢追踪我的所有人,如果你还要看有关资安的题材,欢迎在下面留言,我可能会更新在这里或是 blog。 ...