
本文介绍如何使用 go 语言扩展单文件 uuid/md5 生成逻辑,支持通过命令行参数指定数量,批量创建带唯一标识和校验值的文件,并渲染 html 模板。
本文介绍如何使用 go 语言扩展单文件 uuid/md5 生成逻辑,支持通过命令行参数指定数量,批量创建带唯一标识和校验值的文件,并渲染 html 模板。
在实际开发中,常需为多个资源生成唯一标识(UUID)及对应校验值(如 MD5),并持久化到独立文件中。原代码仅生成单个 UUID 和 MD5 并写入固定文件 text.txt,缺乏可扩展性。本文将指导你将其改造为命令行驱动的批量生成工具:只需传入目标文件数量(如 ./gen 5),即可自动生成 5 个以 UUID 命名的 .txt 文件,每个文件均包含该 UUID 对应的十六进制 MD5 校验数组,并通过 template.html 渲染输出。
✅ 核心改造点
-
接收命令行参数:使用
os.Args[1:]获取用户输入的文件数量(如os.Args[1] == "10"); -
安全解析参数:借助
strconv.Atoi转换并校验输入是否为有效整数; -
解耦逻辑:将文件创建与模板渲染封装为独立函数
createFile(uuid string),提升复用性与可读性; -
动态命名:文件名采用
uuid + ".txt"(如a1b2c3d4-e5f6-4g7h-8i9j-k0l1m2n3o4p5.txt),避免覆盖冲突; -
错误处理健壮化:对
os.Args长度、数字转换失败等场景提供清晰提示,不 panic。
? 示例用法
编译后运行:
go build -o gen main.go ./gen 3
将生成 3 个文件:
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等
f8a7b2c1-e9d0-4a5f-8b7c-1e2f3a4b5c6d.txt 9e3a1b2c-d4e5-4f6a-8b7c-9d0e1f2a3b4c.txt ...
每个文件内容由 template.html 渲染,例如:
<!-- template.html -->
UUID: {{ .Uuid }}
MD5: {{ .Md5 }}⚠️ 注意事项
- 确保当前目录存在
template.html,否则template.ParseFiles将 panic; -
Getmd5函数返回的是 C 风格的{0xXX, ...}数组格式(适配嵌入式场景),如需标准 32 位小写十六进制字符串(如"d41d8cd9..."),请替换为fmt.Sprintf("%x", md5.Sum(data).Sum(nil)); -
newUUID()已严格遵循 RFC 4122 v4 规范(设置 variant 和 version 位),无需额外依赖第三方库; - 生产环境建议添加日志前缀、文件写入权限检查,以及并发控制(如需更高性能,可用
sync.WaitGroup+ goroutines,但注意模板解析非并发安全,需加锁或预编译)。
通过以上改造,你的 Go 工具即可从“单次实验脚本”升级为实用的批量资源初始化工具,兼顾简洁性、可维护性与工程规范性。

















