Go问答技术文章
-
Go sync.Pool 的 Get 不保证返回刚 Put 的对象,池内元素也可能被自动移除。本文用最小代码说明 Get、Put、New 的边界,并给出复用临时对象时的排查清单。336 收藏 -
go list -json 会把普通源文件、同包测试文件和外部包测试文件放进不同字段。本文用 GoFiles、TestGoFiles、XTestGoFiles 的包名边界,说明代码生成器和测试收集器该怎样选择数组。336 收藏 -
Go 使用 unixgram 接收本地数据报时,每次读取对应一个独立报文,但缓冲区太小会让消息内容被截断。本文用 ReadFromUnix 和 ReadMsgUnix 说明怎样保留边界、识别风险并选择合适的读取方式。336 收藏 -
Go x/text/unicode/norm 的 NFKC 会先做兼容分解,再做规范组合,因此全角、带圈数字、上标和连字等字符可能改变外观。本文说明变化原因、Go 写法与不应使用 NFKC 的语义边界。336 收藏 -
Go 服务接入 OpenTelemetry 后,如果 Trace 仍然无法显示清晰的调用关系,通常要从 service.name、HTTP 入出站埋点、上下文传播和批量导出四个边界排查。本文给出一套原创接入思路。335 收藏 -
Go 1.27 泛型方法调用无法推断类型参数时,先核对工具链,再检查普通参数和回调是否提供足够证据,并用显式类型实参区分推断失败、约束不匹配、方法表达式和接口边界问题。335 收藏 -
Go time.Parse 遇到不带时区的字符串时会按 UTC 解释,这不是读取机器本地时区失败,而是标准规则。本文用 ParseInLocation 指定业务时区,并用 Location、Zone 和 Unix 对比确认结果。335 收藏 -
Go binary.Read 按协议字段顺序和字节序读取数据,不会自动把结构体隐式对齐当成报文字节。本文用固定头、显式保留字段、长度检查和跨平台解析说明如何定位结构体对齐误解。335 收藏 -
Go 数据竞争测试偶现失败时,可从具体包和测试名缩小范围,成对分析 race 访问栈定位共享对象,再统一加锁或隔离状态,并保留并发回归测试。335 收藏 -
go-runewidth 的歧义宽度字符并不都会随东亚宽度策略变成两列。本文解释 EastAsianWidth、Condition、IsAmbiguousWidth 与 RuneWidth 的差异,并给出固定终端表格对齐口径的 Go 写法。335 收藏 -
go-colorful 在 HCL 空间混色时可能得到无法由 RGB 表示的颜色。本文用 IsValid 判断结果,再用 Clamped 处理显示路径,并说明错误范围与直接调用 RGB255 的常见问题。335 收藏 -
gopacket 的 Lazy 控制解码时机,NoCopy 控制输入复制。结合缓冲区复用、按需取层和异步交付示例,说明四种配置及所有权、并发边界。335 收藏 -
bytes.Buffer.Reset 会清空可读数据,却保留底层存储。本文用容量、切片别名和并发边界说明复用何时有益、何时会让大块内存长期驻留。334 收藏 -
Go 的 crypto/cipher.NewGCMWithRandomNonce 会为每次 Seal 自动生成 12 字节 nonce,并把 nonce 放在返回密文的最前面。本文用同一个 AES-GCM 示例核对密文布局、Open 的切片方式、附加数据校验和旧代码迁移边界。334 收藏 -
Go JSON 指针字段设为 nil 后仍输出,通常是因为标签没有 omitempty,nil 会被编码为 null。本文从最小结构体、标签检查、接口契约和自定义 MarshalJSON 四个方向定位原因。334 收藏