【go语言】结构体数据填充生成md错误码文件

2024-01-21

这里使用pongo2这个模版引擎库进行md文件渲染 GitHub - flosch/pongo2: Django-syntax like template-engine for Go

package main

import (
	"fmt"
	"github.com/flosch/pongo2/v6"
	"os"
)

func main() {
	// 假设有一个名为 data 的 map 数组
	data := []map[string]interface{}{
		{"Name": "John", "Age": 30, "Country": "USA"},
		{"Name": "Alice", "Age": 25, "Country": "Canada"},
		{"Name": "Bob", "Age": 35, "Country": "UK"},
	}

	// 使用 Pongo2 模板定义表格
	templateString := `
# User Data

| Name  | Age | Country |
|:-------:|:-----:|:---------:|
{% for user in data %}| {{ user.Name }} | {{ user.Age }} | {{ user.Country }} |
{% endfor %}

`

	// 解析模板
	template, err := pongo2.FromString(templateString)
	if err != nil {
		fmt.Printf("Error parsing template: %v\n", err)
		return
	}

	// 执行模板
	output, err := template.Execute(pongo2.Context{"data": data})
	if err != nil {
		fmt.Printf("Error executing template: %v\n", err)
		return
	}

	// 打印输出或将其保存到文件
	fmt.Println(output)

	// 也可以将输出保存到文件
	file, err := os.Create("output.md")
	if err != nil {
		fmt.Printf("Error creating file: %v\n", err)
		return
	}
	defer file.Close()

	file.WriteString(output)
}

Go 语言原生如下示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	data := []map[string]interface{}{
		{"Name": "Alice", "Age": 25, "City": "New York"},
		{"Name": "Bob", "Age": 30, "City": "San Francisco"},
		// ... (更多数据)
	}

	mdTable := generateMarkdownTable(data)
	fmt.Println(mdTable)
}

func generateMarkdownTable(data []map[string]interface{}) string {
	var builder strings.Builder

	// 表头
	headers := make([]string, 0)
	for key := range data[0] {
		headers = append(headers, key)
	}
	writeRow(&builder, headers)

	// 表格数据
	for _, row := range data {
		values := make([]string, 0)
		for _, key := range headers {
			value := fmt.Sprintf("%v", row[key])
			values = append(values, value)
		}
		writeRow(&builder, values)
	}

	return builder.String()
}

func writeRow(builder *strings.Builder, values []string) {
	builder.WriteString("| ")
	builder.WriteString(strings.Join(values, " | "))
	builder.WriteString(" |\n")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【go语言】结构体数据填充生成md错误码文件 的相关文章

  • 如何在 Go 中解组可以是数组或字符串的字段?

    我正在尝试解组该文件 babel email protected cdn cgi l email protection licenses MIT repository https github com babel babel tree ma
  • 使用反射从泛型结构获取类型参数

    想象一下我有以下结构 type MyGeneric T string int struct 我想在创建新的 MyGeneric 时检查用于实例化该结构的泛型是字符串还是 int myGenericString MyGeneric strin
  • 为什么我无法导入“内置”pkg?

    cat test go package main import builtin func main return go run test go can t find import builtin 我只是好奇 因为该文件存在并且已正确打包 但
  • 使用 Go 解组嵌套 xml

    我有以下代码片段 我一直在努力让它工作 我到处寻找解决方案 但我找到的解决方案似乎都不起作用 我的映射似乎有问题xml Unmarshal命令 因为它涉及嵌套字段 下面的代码用于检索第一个被称为的值unit 并且位于 xml 代码的顶层 另
  • Go中的切片分配是否复制内存

    目的 我有一个大缓冲区 我想要一个指向缓冲区中不同位置的指针数组 切片 我在做什么 datPtrs make byte n for i 0 i
  • 在 docker build 中缓存“go get”

    我想将 golang 单元测试封装在 docker compose 脚本中 因为它依赖于多个外部服务 我的应用程序有很多依赖项 因此需要一段时间go get 如何以允许构建 docker 容器的方式缓存包 而无需每次要测试时下载所有依赖项
  • 处理变量的范围:内部循环

    作为一名直接进入 Go 的 JS 开发者 如果长度超过commits不止一个 我没有太多时间来完成这件事 而且我搜索的时间比我希望的要长 关于如何重组它或让它发挥作用有什么想法吗 case github PushPayload push p
  • 重写 ResponseWriter 接口以捕获 HTTP 错误

    我正在用 Go 编写一个 Web 应用程序 虽然各种 mux 库提供了一种设置自定义 404 错误处理程序的方法 但没有任何其他 4xx 和 5xx 错误代码 一个建议是重写 ResponseWriter 接口中的 WriteHeader
  • 为什么空切片有 24 个字节?

    我想了解创建空切片时会发生什么make int 0 我执行此代码进行测试 emptySlice make int 0 fmt Println len emptySlice fmt Println cap emptySlice fmt Pri
  • Go 中的格式错误 - %s %v 或 %w

    s v and w可用于格式化 Go 中的错误 将它们转换为字符串 fmt Errorf 它们在 Go 自己的工具中的使用方式似乎有所不同 In cmd go internal get path go https github com go
  • 如何获取字段类型的零值

    我有一个包含许多字段的结构 我已经弄清楚如何使用反射提取字段名称 值和标签信息 我还想做的是确定字段的值是否与字段的默认值不同 目前 我有这个 有效 但有点臭 qsMap make map string interface var defa
  • ConstantTimeByteEq 如何工作?

    在大神的密码库里 找到了这个函数ConstantTimeByteEq http golang org src pkg crypto subtle constant time go s 897 936 L17 它有什么作用 如何工作 Cons
  • 使用私有 git 存储库时的 go 工作区结构

    当你不使用 github 时 我一直在尝试找出 go 代码 工作区的标准文件夹布局 结构 我可以看到如何go get在获取 github 项目时有效 但假设我自己的 git 项目不会有 github com username project
  • formatFloat :将浮点数转换为字符串[重复]

    这个问题在这里已经有答案了 http golang org pkg strconv http golang org pkg strconv http play golang org p 4VNRgW8WoB http play golang
  • golang:使用 gin 路由器服务 net.Conn

    我有一个处理传入 TCP 连接的函数 func Handle conn net Conn error 另外 我有一个初始化的 gin 路由器 带有已实现的句柄 router gin New router GET router POST Th
  • 如何使用json传递opentracing数据

    我的 API 网关启动一个跟踪器和一个用于验证电子邮件的范围 然后它传递给user service用于验证 我想通过这个span详情至user service作为 json 对象并启动另一个span as a tracer start sp
  • 如何使用golang中通过引用传递的索引访问切片中的元素

    我将切片的引用传递给函数 并且我正在函数内的切片中进行更改 我还尝试使用索引访问切片中的元素 它在 golang 中抛出异常 通过引用传递的索引访问切片中的元素的最佳方法是什么 您可以在此处找到示例代码 参考 http www reddit
  • 如何通过模板中的变量访问对象字段?

    我有一个嵌套循环 columns columns range dx dataList range c columns index dx c end end dataList是orm模型数组 和ID Title字段 那么columns is
  • 使用cgo时的多重定义

    package main int add int a int b return a b import C import fmt func main func Test1 fmt Println C add 1 3 export Test2
  • 在 Go 中使用互斥锁

    我想了解互斥体是如何工作的 据我目前的理解 它是为了进行原子操作并同步对某些数据的访问 我在这里构建了一个队列数据结构的示例 https github com arnauddri algorithms blob master data st

随机推荐