Go语言技术文章
-
通过 CR、LF 和 CRLF 三组输入,说明 Go mime/quotedprintable.Writer 的 Binary 模式如何保留换行字节,以及它不会改变哪些编码规则。421 收藏 -
Go test 命中缓存时会显示 (cached)。本文说明 -count=1 如何只对当前命令强制重新执行测试,并区分 -run、go clean -testcache、构建缓存和缓存决策诊断。421 收藏 -
围绕 Go sync.Pool 升级后命中率、对象身份和延迟变化,建立可重复的小实验,区分 API 契约、垃圾回收和业务所有权问题,并给出是否继续池化的判断清单。420 收藏 -
Go SetEscapeHTML(false) 适用于需要可读字符的独立 JSON 输出。通过完整示例区分字节表示与解析值,并说明 JSON 必要转义、末尾换行、二次编码及固定字节契约的边界。420 收藏 -
Go 定时轮询要立即执行一次,不能等待 time.NewTicker 的第一拍。把任务抽成函数先直接调用,再用 ticker.C 驱动后续周期,并用 context 控制退出。419 收藏 -
io/fs.ValidPath 只接收 string,不能直接复用调用方的 []byte。动态路径应复用 []byte scratch,完成一次受控的 string 转换后再校验,并注意临时字符串的生命周期、容量和并发隔离。419 收藏 -
Go net/http.Transport 返回 error 时,先区分 HTTP 响应与传输失败,再沿错误链识别取消、超时、连接和 URL 原因,并据此安排日志与重试。419 收藏 -
从 Read、ReadAt、Size 和 io.EOF 的组合判断 Go io.SectionReader 是否读完整区间,覆盖顺序读取、固定偏移读取和四种边界情况。419 收藏 -
crypto/subtle.XORBytes 会按两个输入切片的较短长度写入,但输入长度不一致并不是普通截断场景。本文结合官方文档说明 dst 长度、输入长度、返回值和切片重叠的边界。418 收藏 -
Go path.Match 面向正斜杠分隔的路径名,* 和 ? 不会跨过斜杠。本文用代码说明分段匹配、字符类、转义、完整匹配与 ErrBadPattern 的区别,并说明什么时候应改用 filepath.Match。418 收藏 -
Go debug/pe 的 COFFSymbol.Name 只有 8 个字节,短名称直接内嵌,长名称则保存字符串表偏移。本文解释两种编码的判断方式,用 FullName 正确读取长符号名,并说明字符串表位置、辅助记录和坏偏移错误的处理边界。418 收藏 -
Go log/slog.Logger 减少临时分配的关键不是盲目复用对象,而是让日志调用尽早走 Attr 路径:优先使用 LogAttrs 和类型化 Attr,把稳定上下文交给 With 预处理,只对昂贵参数做 Enabled 预判断。本文结合调用路径、属性复用和适用边界说明具体写法。417 收藏 -
ast.File.GoVersion 不是 go.mod 的版本字段,而是从当前 Go 文件头的构建约束推导出的最低语言版本。本文拆开两条版本链路,并给出 AST 工具的读取方案。416 收藏 -
区分 Go gosym.LineToPC 的文件键缺失与源码行无地址,给出保留错误类型的诊断代码,并说明源码版本、路径映射和近似定位的处理方式。415 收藏 -
用 embed.FS、fs.Sub 与 os.CopyFS 封装默认资源复制函数,附完整 Go 示例和准备命令,说明目录层级、同名文件冲突、错误链、部分完成及实际工具中的适用范围。414 收藏