Go语言技术文章
-
用 Go log/slog 包装一个自定义 Handler,把请求上下文中的 request_id、tenant_id 等字段自动加入结构化日志,同时保留 JSONHandler 的级别过滤、静态字段和分组能力。470 收藏 -
本文用一个小项目说明 Go html/template 如何让用户输入按 HTML 上下文自动转义,并把模板解析放到初始化阶段、在批处理循环中复用模板与 bytes.Buffer,减少无意义的重复分配。103 收藏 -
Go html/template 会按 HTML 上下文自动转义用户输入。本文从一次渲染结果异常的排查经历出发,区分安全转义、字段为空和 Execute 错误,并给出可复用的处理方式。152 收藏 -
用embed.FS嵌入报表模板,按目录加载并复用解析结果,结合语义化HTML说明批处理分配、输出职责与模板更新边界。370 收藏 -
Go embed.FS 读取模板时,问题通常不在模板语法,而在嵌入模式和 FS 内部路径没有对齐。本文从目录映射、ReadDir/ReadFile 到 template.ParseFS,说明如何避免结果为空或路径不符合预期。208 收藏 -
Go embed.FS 可以把模板目录编译进程序,再以 fs.FS 的方式交给 ReadFile、ReadDir 和 template.ParseFS。本文从目录布局开始,给出一个可复用的最小示例,并说明路径、匹配规则、错误处理和只读边界。341 收藏 -
通过Go标准库构建tarpack小项目,逐条流式归档普通文件,复用复制缓冲,说明条目大小、关闭错误、并发与内存边界。171 收藏 -
围绕 Go archive/tar 流式写入大归档文件,讲清 Header.Size、WriteHeader、Write、Close 的配合,以及结果为空或截断时的排查顺序。231 收藏 -
用 Go archive/tar 把大文件直接流式写入 tar 归档,准确设置 Header.Size,复用 io.Copy 处理单文件、多文件和网络输出,避免把整个文件读入内存。296 收藏 -
用 Go archive/zip.Reader 逐项读取 ZIP 条目时,把条目内容交给 io.Reader 处理,并把 io.CopyBuffer 的工作缓冲区放到循环外复用,减少批处理中的重复临时分配,同时保留 Close、校验和、ZIP64 尺寸与不安全路径边界。314 收藏 -
runtime/metrics 结果为空时,先区分空的 Sample 切片、指标名称不在 All 中、Value.Kind 判断错误,以及直方图当前确实没有样本。本文给出一套可复用的读取与排查方式。474 收藏 -
os.File.Sync 返回成功仍读不到预期内容时,按写入完整性、读回位置、目录项和底层存储四层排查,避免把文件同步误认为事务提交。109 收藏 -
解释 Go adler32.New 返回的 hash.Hash32 如何通过 Sum 追加 4 字节摘要,为什么传入切片的前缀会保留,以及 Checksum、Sum32 和 Sum 的选择边界。199 收藏 -
用 Go net/http/httptrace 观察 GetConn、GotConn、PutIdleConn 和 GotConnInfo,定位 Response.Body、Transport 复用配置及 HTTP/2 场景下的连接未复用问题。139 收藏 -
用 Go html/template 完成用户输入自动转义,覆盖 HTML 文本、href 属性、脚本上下文、安全类型与不安全 URL 的边界。261 收藏