Go语言技术文章
-
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 收藏 -
Go archive/zip.Reader 逐项读取时,结果为空通常不是 range 失效,而是 Reader 构造、文件大小、目录条目或 File.Open 错误没有被分别记录。本文给出本地 ZIP 与 ReaderAt 两种读取方式,并用可量化的条目指标定位不完整结果。332 收藏 -
Go 的 archive/zip 提供 OpenReader 和 NewReader 两种读取入口。本文从逐项遍历 ZIP 条目开始,说明怎样区分目录、打开文件内容、限制读取范围并处理关闭和读取错误,最后封装一个可复用的读取函数。200 收藏 -
Go 的 macho.OpenFat 返回 ErrNotFat 时,通常只说明文件不是 universal binary 但可能是普通 Mach-O。本文解释魔数判定、错误分支、资源关闭和不能盲目回退的边界。377 收藏 -
httputil.ReverseProxy 的 ErrorHandler 专门接管后端请求失败和 ModifyResponse 返回的错误。本文说明默认 502 的触发范围,给出可脱敏记录请求上下文、区分取消与上游不可达的自定义处理器,并说明响应已写出和 body 复制失败时的边界。125 收藏