Go语言技术文章
-
Go archive/zip 将 ZIP 条目的扩展字段放在 FileHeader.Extra 中。本文用安全的 TLV 遍历读取原始字节,处理未知字段、截断输入、重复字段与条目遍历边界。385 收藏 -
Go泛型可用类型集和底层类型项限制数值参数。通过整数、实数约束与业务计数白名单示例,说明自定义类型接纳、同一类型参数及溢出精度边界。385 收藏 -
Go race 报告标出 Read by goroutine 时,不要只盯着读函数。本文用一段最小复现说明如何沿 Previous write 栈找到真正写入点,再把互斥锁、通道或原子操作补在共享状态边界。385 收藏 -
Go cmp.Or 从多个同类型候选值中返回第一个非零值,适合组织请求值、环境值和默认值的回退链,也能组合多级排序比较结果。本文说明其用法、零值边界与验证方式。385 收藏 -
Go regexp.FindReaderSubmatchIndex 面向 io.RuneReader 返回首个整体匹配及各捕获组的字节区间。本文说明整数切片的成对下标、未匹配分组的负一标记、无匹配时的 nil 返回,以及流式 Reader 可能提前读取的边界。385 收藏 -
Go fastjson 在重复解析JSON时可以复用 Parser,减少反复创建解析器和临时对象的分配压力。本文说明 Parser、Value、ParserPool 的生命周期边界,并给出可直接改造的代码结构。385 收藏 -
Go unicode/utf8.RuneStart 只能判断单个字节是否可能是 UTF-8 编码的首字节,不能代替完整校验。本文用分块扫描、DecodeRune 和 Valid 的组合说明 ASCII、续字节、非法字节与不完整尾部的处理边界。385 收藏 -
Go json/v2 迁移不能只替换 import。本文区分工具链升级与语义切换,梳理字段匹配、空值、omitempty 和严格输入风险,给出兼容选项示例及发布回退清单。384 收藏 -
Go encoding/json 的 omitempty 不会自动按自定义 IsZero 省略结构体字段。应使用 omitzero,并区分未提供、显式零和有效值;组合标签按空或零任一条件省略。384 收藏 -
Go 1.23 及以上使用 slices.Collect 收集空 iter.Seq 时会得到 nil 切片。本文区分 nil 与非 nil 空切片、interface 包装和 JSON 输出,并给出稳定返回 [] 的处理方式。384 收藏 -
Go html/template 的 missingkey 只控制 map 缺失键在执行阶段的行为。本文用一个可复用示例说明 default、zero、error 的差别,并区分结构体字段错误、Execute 返回值和生产场景的选择。384 收藏 -
Go 的 x/text/encoding/unicode.UTF8BOM 会在编码输出开头加入 UTF-8 BOM,并在解码时剥离开头 BOM。本文比较一次性 Bytes 转换与 transform.NewWriter 流式写入,说明 EF BB BF、Close 和 UTF8 选择边界。384 收藏 -
说明Go bitset中Length概念对应Len方法,比较逻辑位长度与Count置位数量,通过小集合状态推导解释扩展、清位、空集合及性能指标的差别。384 收藏 -
Go net/http 的 MaxBytesReader 可以限制请求体读取大小,但超限时不能靠字符串比较来判断。本文用 errors.As 识别 *http.MaxBytesError,说明 Limit 字段、413 响应、普通读取错误和关闭顺序的处理边界。384 收藏 -
Go sync.Mutex.TryLock 用 bool 结果表示本次是否立即拿到锁:true 才能进入临界区并负责 Unlock,false 不会建立同步关系。本文结合可跳过任务说明判断、解锁和使用边界。384 收藏