0

0

Golang text文本处理 模板与转换

P粉602998670

P粉602998670

发布时间:2025-08-28 09:40:02

|

449人浏览过

|

来源于php中文网

原创

Go语言通过text/template包实现高效文本生成,支持变量注入、条件循环控制、自定义函数及模板嵌套。示例展示动态渲染姓名年龄、学生成绩判断、字符串转大写及模板复用,结合html/template可防XSS,适用于HTML页面、配置文件等场景。

golang text文本处理 模板与转换

Go语言在文本处理方面提供了强大且简洁的工具,尤其适合生成动态文本内容,比如HTML页面、配置文件、邮件模板等。核心支持来自

text/template
包,它允许你定义模板并安全地注入数据,同时支持逻辑控制和自定义函数。

模板基础:使用 text/template

Go的

text/template
包用于将数据结构渲染到文本中。模板通过双大括号
{{}}
插入变量或执行指令。

基本语法示例:

模板内容:
Hello, {{.Name}}!
You are {{.Age}} years old.

Go代码:
package main

import (
  "os"
  "text/template"
)

type Person struct {
  Name string
  Age int
}

func main() {
  t := template.New("example")
  t, _ = t.Parse("Hello, {{.Name}}! You are {{.Age}} years old.\n")
  
  p := Person{Name: "Alice", Age: 30}
  t.Execute(os.Stdout, p)
}

输出:
Hello, Alice! You are 30 years old.

立即学习go语言免费学习笔记(深入)”;

控制结构:条件与循环

模板支持

if
range
等控制语句,让输出更灵活。

示例:遍历列表并条件判断

templateStr := `
{{range .}}
  {{if gt .Score 80}}
    Excellent: {{.Name}} - {{.Score}}
  {{else}}
    Keep trying: {{.Name}} - {{.Score}}
  {{end}}
{{end}}`

type Student struct {
  Name string
  Score int
}

students := []Student{
  {"Bob", 95},
  {"Charlie", 70},
}

t, _ := template.New("grades").Parse(templateStr)
t.Execute(os.Stdout, students)

输出:
  Excellent: Bob - 95
  Keep trying: Charlie - 70

自定义函数:扩展模板能力

你可以通过

FuncMap
向模板注册自定义函数,实现格式化、转换等操作。

示例:添加一个转大写的函数

AIFreePhp企业建站系统
AIFreePhp企业建站系统

AiFreePhp(爱免费php企业建站程序是一个免费开源的PHP建站程序),基于PHP + MYSQL 与模板技术,具有产品展示,文章栏目,下载管理,友情链接等功能。无任何限制功能,程序简单实用,可用于中小企业网站建设,不收取任何费用。使用本程序,不可将程序变相转售,二次开发发布。 运行安装目/install/index.php一般要求安装在站点的根目录,不是根目录有试过有没有问题,请大家尽量以

下载

funcMap := template.FuncMap{
  "upper": strings.ToUpper,
}

t := template.New("withFunc").Funcs(funcMap)
t, _ = t.Parse("Hello, {{upper .}}!")
t.Execute(os.Stdout, "go developer")

输出:
Hello, GO DEVELOPER!

注意:导入

"strings"
包才能使用
strings.ToUpper

模板嵌套与组合

大型文本可拆分为多个子模板,使用

define
template
指令组合。

示例:

tpl := `{{define "Greeting"}}Hi, {{.}}{{end}}
{{template "Greeting" "Alice"}}`

t, _ := template.New("main").Parse(tpl)
t.Execute(os.Stdout, nil)

输出:
Hi, Alice

这种机制适合构建可复用的模板片段,如页头、页脚。

基本上就这些。Go的模板系统简单但功能完整,配合

html/template
还能防XSS,适用于各类文本生成场景。掌握变量注入、流程控制、函数扩展和模板复用,就能高效完成文本转换任务。

相关专题

更多
golang如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

177

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

226

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

336

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

208

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

388

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

194

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

189

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

191

2025.06.17

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

25

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.6万人学习

Django 教程
Django 教程

共28课时 | 3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号