-
go-mp3 的 Seek 使用解码流字节偏移,输出为 16 位小端双声道 PCM;本文说明为什么要按 4 字节 sample 对齐,并给出 Seek、Read 和生产边界处理示例。
-
动态查询不能把所有列都写死成 string 或 int64。本文用 ColumnType.ScanType 生成 Rows.Scan 的指针目标,并说明 NULL、[]byte、驱动不支持类型信息和 rows.Err 的处理边界。
-
Go sync.Pool 里的对象会消失,是因为它只承诺临时对象复用,不承诺持久保存:池中元素可被运行时自动移除,Get 也可能直接把池当作空池。本文用 New、Get、Put 示例说明正确用法,并划清 sync.Pool 与业务缓存的边界。
-
用 go/format.Source 格式化模板生成的 Go 源代码,处理完整文件与代码片段的差异,再在成功后写入文件,并说明固定 gofmt 版本的稳定性边界。
-
slices.Insert 批量插入是否复用底层数组,先看插入后的长度是否超过原切片容量,再结合尾部或中间插入位置判断移动成本。本文给出容量判断、别名边界与可复查验证代码。
-
time.AfterFunc 会在独立 goroutine 中执行回调。本文用事件 channel、stop 信号和 callbackDone 完成信号,说明如何让主 goroutine 安全接收超时事件,并处理 Stop、Reset 与回调并发边界。
-
Go 的 utf8.DecodeRuneInString 遇到非法 UTF-8 时返回 RuneError 和 size=1,空字符串则返回 size=0。本文用原创示例说明如何按字节推进、区分合法替换字符,并处理分块读取的字符边界。
-
sync.Map 虽然支持并发安全,但只针对少数访问模式优化。本文从单键写一次、不同 key 并发、同键频繁覆盖、复合更新和 Range 一致性几个角度,说明什么时候应该换回强类型 map 加 RWMutex。
-
json.RawMessage 本质上是保存原始 JSON 字节的切片,普通赋值只复制切片描述,两个变量仍可能共享底层数组。本文用 Unmarshal 和直接修改两个场景定位别名来源,并给出 bytes.Clone、append 到 nil 切片的深拷贝写法与隔离检查清单。
-
GOMEMLIMIT 是 Go runtime 的软内存限制,不是 cgroup 或操作系统的硬性封顶。本文从统计范围、GC 让步机制、运行指标和并发控制四个方面说明超限原因与配置边界。
-
Go generate 在 CI 中报找不到命令,通常不是指令没有执行,而是生成器不在 PATH、工作目录与预期不同,或工具安装步骤没有进入同一个 job。本文按命令解析、包源目录、PATH 和流水线检查点给出稳定排查与配置方法。
-
Go 上传请求在请求头发出后长时间没有发送请求体,通常要先检查 Expect: 100-continue 与 http.Transport.ExpectContinueTimeout,而不是直接调大响应头超时。本文按服务器响应、零值语义和请求上下文给出排查与配置取舍。
-
Go 读取 CSV 时出现逗号字段错位,通常是把字段内容里的逗号当成了分隔符,或输入没有遵守引号规则。本文用 encoding/csv 说明 Reader、FieldsPerRecord、ParseError 和 Writer 的正确处理方式。
-
Go 1.27 的 database/sql.ConvertAssign 主要面向数据库驱动实现。本文说明如何在 RowsColumnScanner.ScanColumn 中复用 Scan 的类型转换规则,正确传递 ScanContext,并处理 NULL、溢出、Scanner、EOF 和资源关闭边界。
-
用 slog.NewLogLogger 把旧 log.Logger 调用桥接到 slog.Handler,说明固定级别、Handler.Enabled 过滤、文本输出和结构化字段的边界。