【go从零单排】Text Templates

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

Go 中的文本模板(Text Templates)是通过 text/template 包提供的功能,允许开发者创建动态文本输出。这些模板可以用于生成 HTML、配置文件、报告等多种文本格式。

💻代码

Text Templates

package main//导入了 os(用于处理操作系统功能)和 text/template(用于处理文本模板)包。
import ("os""text/template"
)func main() {//创建一个新的模板 t1,并解析模板字符串 "Value is {{.}}\n"。其中 {{.}} 是一个占位符,表示传递给模板的数据。t1 := template.New("t1")t1, err := t1.Parse("Value is {{.}}\n")if err != nil {panic(err)}//使用 Must 方法确保模板解析成功。如果解析失败,会引发panic。这里又解析了一个模板字符串 "Value: {{.}}\n"。t1 = template.Must(t1.Parse("Value: {{.}}\n"))//执行模板 t1,将字符串 "some text" 传递给模板,输出结果为 Value: some text。t1.Execute(os.Stdout, "some text")//执行模板 t1,将整数 5 传递给模板,输出结果为 Value: 5。t1.Execute(os.Stdout, 5)//执行模板 t1,将字符串切片传递给模板,输出结果为 Value: [Go Rust C++ C#](切片会以字符串形式输出)。t1.Execute(os.Stdout, []string{"Go","Rust","C++","C#",})//定义一个名为 Create 的函数,用于创建和解析新的模板。它接受模板名称和模板字符串作为参数,并返回解析后的模板。Create := func(name, t string) *template.Template {return template.Must(template.New(name).Parse(t))}//使用 Create 函数创建模板 t2,模板字符串为 "Name: {{.Name}}\n"。//这里的 {{.Name}} 表示要访问传递数据中的 Name 字段。t2 := Create("t2", "Name: {{.Name}}\n")//执行模板 t2,传递一个匿名结构体,输出结果为 Name: Jane Doe。t2.Execute(os.Stdout, struct {Name string}{"Jane Doe"})//执行模板 t2,传递一个字典(map),输出结果为 Name: Mickey Mouse。t2.Execute(os.Stdout, map[string]string{"Name": "Mickey Mouse",})//创建模板 t3,包含条件语句。{{if .}} 检查传入的数据是否为真值。t3 := Create("t3","{{if . -}} yes {{else -}} no {{end}}\n")//执行模板 t3,传递空字符串,输出结果为 no。t3.Execute(os.Stdout, "not empty")t3.Execute(os.Stdout, "")//创建模板 t4,使用 {{range .}} 遍历传入的数据。t4 := Create("t4","Range: {{range .}}{{.}} {{end}}\n")//执行模板 t4,传递字符串切片,输出结果为 Range: Go Rust C++ C#。t4.Execute(os.Stdout,[]string{"Go","Rust","C++","C#",})
}
//输出
//Value: some text
//Value: 5
//Value: [Go Rust C++ C#]
//Name: Jane Doe
//Name: Mickey Mouse
//yes 
//no 
//Range: Go Rust C++ C# 

🔍理解

  • 模板:模板是包含占位符的文本字符串,这些占位符会在执行模板时被替换为实际值。
  • 数据:模板执行时需要传入数据,这些数据可以是基本类型、结构体、切片、映射等。
  • 在解析和执行模板时,建议使用 Must 函数来处理错误,这样可以在发生错误时立即引发panic,便于调试。

💡 Tips

模版方法

  • 使用 template.New() 创建新模板
  • Parse() 方法解析模板字符串
  • 使用 Execute() 方法将数据传递给模板
  • 使用 {{.}} 访问当前数据。
  • 对于结构体,可以使用 {{.FieldName}} 来访问字段

模版其他功能

  • 自定义函数:可以为模板添加自定义函数,使用 template.FuncMap。
  • 模板嵌套:可以将一个模板嵌套在另一个模板中。
  • 模板继承:可以通过定义基础模板并在其他模板中引用来实现模板的继承。

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/12601.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

mysql 常用命令(二)

1、创建空表 mysql> CREATE TABLE test ( id int(4) NOT NULL AUTO_INCREMENT, name char(20) NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETlatin1;AUTO_INCREMENT:自增,下次插入数据,会自动增加ID的值,…

麦肯锡数字化转型方法论:系统性四步法

在全球范围内,众多企业纷纷投身于数字化转型,对价值链各环节产生深远影响。 数字化转型不仅能够创造价值,提高生产力,还能帮助企业保持竞争优势。 然而,大多数转型都因准备不充分而遭遇失败。 麦肯锡通过对全球上千个…

政企学习考试系统(源码+文档+部署+讲解)

本文将深入解析“政企学习考试系统”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 本项目名称为政企学习考试系统,是一款面向政企用户的在线学习与考试平台。该系统旨在为用户提供便捷、高效的学习和考核服务&a…

Jmeter基础篇(22)服务器性能监测工具Nmon的使用

一、前言 我们在日常做压测的过程中,不仅仅需要监控TPS,响应时间,报错率等这些系统基础性能数据,还需要对服务器的性能(如CPU、磁盘、内存、网络IO等)做监控,以求对系统运行过程中的硬件性能有…

三级等保安全解决方案,实施方案,整改方案(Word,PPT等相关资料学习)

信息系统进行三级等保的主要原因在于保障信息安全,维护国家安全和公共利益。三级等保是我国根据相关法律法规制定的信息安全等级保护制度中的一部分,旨在确保信息系统的完整性、可用性和保密性。通过三级等保,信息系统可以得到一系列的安全保…

Springboot 使用EasyExcel导出含图片并设置样式的Excel文件

Springboot 使用EasyExcel导出含图片并设置样式的Excel文件 Excel导出系列目录:★★★★尤其注意:引入依赖创建导出模板类逻辑处理controllerservice 导出效果总结 Excel导出系列目录: 【Springboot 使用EasyExcel导出Excel文件】 【Springb…

老破机器硬盘要坏,转移虚拟机里的打字平台过程全记录

我有一台老破机器,说破其实没多破,但是老应该是有几年了,这机器一开始一直放在领导办公室不让人用,后来因为单位整体搬迁,我跟领导讨了来,win10的系统,我装了个虚拟机好像是15的版本&#xff0c…

光流法与直接法在SLAM中的应用

本文总结视觉SLAM中常用的光流法与直接法 1、Lucas-Kanade光流法 相机所拍摄到的图像随相机视角的变化而变化,这种变化也可以理解为图像中像素的反向移动。“光流”(Optical Flow)是指通过分析连续图像帧来估计场景中像素或特征点的运动的技…

VPN相关学习笔记

目录 VPN IPSec AH ESP IKE 工作流程 SSL SSL协议 握手协议 记录协议 警告协议 非对称密钥协商过程 SSL VPN工作 两种技术对比 VPN 介绍:VPN创建了一个专用隧道,用于安全地传输数据。Internet协议安全(IPSec)和安全套…

通过条件访问策略增强企业的安全性

在当今的数字时代,保护组织的数据比以往任何时候都更加重要,实现这一目标的一种方法是实施条件访问策略。这些策略有助于管理谁可以访问组织的网络,确保只有经过授权的人员才能通过,它们可以充当组织数据的保安,只让符…

二叉树搜索树(上)

二叉树搜索树(上) 概念 二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树: • 若它的左子树不为空,则左子树上所有结点的值都⼩于等于根结点的值 • 若它的右子树不为空,则右子树…

人群计数制作私有数据集教程-----自用

一、人群计数的数据集包括两部分:图像部分和标签部分 1.公开数据集格式 标签部分主要包括每个人头的坐标点:(x, y); 常见的标签格式例如:ShanghaiTech数据集中的格式,用mat文件存储每个人头的坐…

SpringBoot项目快速打包成jar项目与部署

上文中,tomcat配置完成了。接下来我们需要将我们的项目打包部署至tomcat服务器。 传统的Web应用进行打包部署时,通常会打成War包的形式,然后将War包部署到Tomcat等服务器中,而SpringBoot应用使用的是嵌入式Servlet容器,也就是说,SpringBoot应用默认是以jar包形式进行打包…

【YOLOv8图像分类】YOLOv8图像分类源代码

前言 此程序是使用YOLOv8训练自己的图像并测试。Yolo系列模型可以说是比较特殊的模型,因为不像其他公开网络ResNet、GoogLeNet等等,可以自己构建和更改层。Yolo只能整体调用这个网络,这个可能是让初学者比较头疼的问题,就是看不到…

【干货】金融数据分析:风险评估中的数据分析

风险评估中的数据分析 金融风险评估因是金融行业的核心任务之一,也是保障金融稳定和机构可持续发展的关键。在当今数字化时代,数据分析已经成为金融风险评估的有力武器,能够帮助我们拨开复杂现象的迷雾,洞察风险的本质。 金融风…

【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS Java API编程实践

实验三: HDFS Java API编程实践 实验题目 HDFS Java API编程实践 实验目的 熟悉HDFS操作常用的Java API。 实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 JDK版本:1.6或以上版本 Java IDE:Eclipse 实验…

第R3周:RNN-心脏病预测(TensorFlow版)

>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 🍺 要求: 找到并处理第8周的程序问题(本文给出了答案)了解循环神经网络&#xff08…

数据结构 ——— 链式二叉树oj题:将链式二叉树的前序遍历存放在数组中

题目要求 给你二叉树的根节点 root ,返回它节点值的 前序 遍历 手搓一个链式二叉树 代码演示: // 数据类型 typedef int BTDataType;// 二叉树节点的结构 typedef struct BinaryTreeNode {BTDataType data; //每个节点的数据struct BinaryTreeNode* l…

前端中的 File 和 Blob两个对象到底有什么不同

JavaScript 在处理文件、二进制数据和数据转换时,提供了一系列的 API 和对象,比如 File、Blob、FileReader、ArrayBuffer、Base64、Object URL 和 DataURL。每个概念在不同场景中都有重要作用。下面的内容我们将会详细学习每个概念及其在实际应用中的用法…

酒店叮咚门铃的类型有哪些

在酒店的环境中,叮咚门铃虽小,却有着重要的作用,它是客人与酒店服务人员沟通的重要桥梁。酒店叮咚门铃主要有以下几种类型: 有线叮咚门铃 这是较为传统的一种类型。它通过电线连接,通常安装在客房的墙壁上,…