-
Go 的 encoding/csv 不负责字符集转换。本文用 golang.org/x/text/encoding/japanese 和 transform.NewReader,把 Shift_JIS 字节流先解码成 UTF-8,再交给 csv.Reader 流式读取。
-
Go csv.Reader 可通过 FieldsPerRecord 选择固定字段数、首条推断或允许变长。本文给出逐条读取和隔离 ErrFieldCount 的完整示例,说明 LazyQuotes 的作用,以及 ParseError 行号、字节列和部分记录的处理。
-
Go sync.Pool 适合缓存短生命周期、可安全丢弃的临时对象。本文用 bytes.Buffer 示例说明 Get 后覆盖、使用中独占、Put 前 Reset,以及切片引用和异步访问的生命周期边界。
-
Go ast.NewIdent 用一个名称创建 *ast.Ident,适合拼装源码生成所需的标识符节点。本文从一次位置为空的故障复盘出发,说明 Name、Pos/End、Obj 分别代表什么,以及什么时候应该改用 parser.ParseFile、token.FileSet 和 go/types。
-
用 Go 标准库 debug/elf 打开 ELF 文件,遍历 File.Sections 读取节区名称、类型、偏移和大小,并说明 Section、Data、Open 之间的选择与特殊节区边界。
-
Go math/bits.Div32 把两个 uint32 组成的双字被除数除以 uint32,并返回商和余数。本文拆开说明 y==0 与 y<=hi 的 panic 条件,给出安全参数检查和边界判断,避免把商溢出误认为普通除法结果。
-
围绕 Go ast.CommentMap 讲清删除声明后的注释过滤、节点替换时的 Update 迁移,以及 ParseComments、Filter 和 format.Node 的配合边界。
-
Go 中不要直接比较 IP 地址字符串。本文用 net/netip.ParseAddr 把文本转换为 Addr,再用值比较、String、Is4In6 和 Unmap 处理 IPv6 压缩写法、IPv4 映射地址、无效输入与稳定输出。
-
Go Scanner 默认 token 缓冲约为 64 KiB,超长日志行会让 Scan 停止。本文说明如何在首次 Scan 前设置 Buffer、如何处理 Err,以及何时改用 bufio.Reader。
-
Go 测试可以用 t.TempDir 管理临时目录,用 t.Cleanup 登记文件、服务和自定义资源的释放动作。本文从最小示例出发,说明清理时机、逆序执行、子测试边界和可复用辅助函数的写法。
-
Go benchmark 会把计时从 benchmark 开始处算起,初始化放错位置就会污染 ns/op。本文用 ResetTimer、StopTimer/StartTimer 和 benchmem 说明怎样只测目标操作。
-
Go crypto/ecdh.PrivateKey.ECDH 使用本地私钥和对端公钥计算共享密钥,前提是两把密钥使用同一条曲线。本文用 P256 示例说明两端配对、错误处理以及共享密钥进入 KDF 或 AEAD 前的边界。
-
Go testing.B.Loop 会把循环前后的初始化和清理排除在计时之外,但不会替你保证循环体的计算结果仍然可观察。本文说明如何避免无副作用调用被编译器优化掉,并梳理 b.Loop 的语法与适用边界。
-
gofpdf 的内部跳转不是给 PDF 拼接 URL,而是先用 AddLink 创建文档内链接标识,再用 SetLink 绑定目标页和位置,最后通过 WriteLinkID 或 CellFormat 把目录文字变成可点击入口。本文还说明它与 Bookmark 的区别以及跨页生成时的组织方式。
-
Go KSUID的完整二进制为20字节,区别于27字符Base62文本。本文给出固定记录保存与恢复函数,说明SQL默认值接口、短写、截断记录和旧数据迁移回退的处理方式。