Go语言技术文章
-
Go 当前 encoding/csv 已不再使用 TrailingComma 和 ErrTrailingComma。本文用迁移示例说明尾随分隔符如何变成空字段、FieldsPerRecord 如何约束列数,以及怎样按业务规则拒绝末尾空值。336 收藏 -
用 Koanf 先加载文件配置,再用带前缀的环境变量覆盖指定键。本文说明 env/v2 的键名转换、加载顺序、类型覆盖、结构体解码和严格合并边界。335 收藏 -
Go cgo 不会替 C 堆自动回收内存。本文从 C.CString、C.CBytes 和 C 侧返回指针入手,建立分配与释放成对出现的责任边界,并说明 Go 指针不能被 C 长期持有的规则。335 收藏 -
Go time.Parse 遇到不带时区的字符串时会按 UTC 解释,这不是读取机器本地时区失败,而是标准规则。本文用 ParseInLocation 指定业务时区,并用 Location、Zone 和 Unix 对比确认结果。335 收藏 -
Go binary.Read 按协议字段顺序和字节序读取数据,不会自动把结构体隐式对齐当成报文字节。本文用固定头、显式保留字段、长度检查和跨平台解析说明如何定位结构体对齐误解。335 收藏 -
当字段集合只有在运行时才能确定时,可以用 reflect.StructOf 根据 StructField 描述构造匿名结构体,再通过 reflect.New 创建可写实例并交给 JSON 编解码。本文按排障手册拆解字段、Value 和边界。335 收藏 -
Go 数据竞争测试偶现失败时,可从具体包和测试名缩小范围,成对分析 race 访问栈定位共享对象,再统一加锁或隔离状态,并保留并发回归测试。335 收藏 -
go-runewidth 的歧义宽度字符并不都会随东亚宽度策略变成两列。本文解释 EastAsianWidth、Condition、IsAmbiguousWidth 与 RuneWidth 的差异,并给出固定终端表格对齐口径的 Go 写法。335 收藏 -
go-colorful 在 HCL 空间混色时可能得到无法由 RGB 表示的颜色。本文用 IsValid 判断结果,再用 Clamped 处理显示路径,并说明错误范围与直接调用 RGB255 的常见问题。335 收藏 -
gopacket 的 Lazy 控制解码时机,NoCopy 控制输入复制。结合缓冲区复用、按需取层和异步交付示例,说明四种配置及所有权、并发边界。335 收藏 -
说明 Go comment.Heading.DefaultID 的锚点转换规则,解释中文和重复标题的碰撞,并用页面级映射统一目录链接与正文标题ID。335 收藏 -
strconv.ParseInt 的 bitSize 决定输入必须落入哪一种有符号整数范围。本文用位宽表和可复用代码区分 ErrSyntax、ErrRange 与 NumError,说明为什么范围错误时返回的边界值不能直接进入业务逻辑。335 收藏 -
用一个小型键值配置格式说明 Go Participle 的结构体标签、递归字段、重复项和错误边界,帮助调用方把有限语法稳定映射成 Go 结构体。334 收藏 -
maps.Clone 复制的是 map 的一层键值,不是递归深复制。本文用嵌套配置示例说明 slice、map、指针字段的共享边界,并给出按场景选择复制方案的方法。334 收藏 -
netip.ParsePrefix 用来把 IPv4 或 IPv6 的 CIDR 文本解析为 Prefix。本文说明如何处理返回错误、为什么 ParsePrefix 不会自动清零主机位,以及何时使用 Masked、MustParsePrefix 和 PrefixFrom。334 收藏