-
go.starlark.net/starlark 的 Thread 局部数据属于 Go 侧线程状态,脚本全局变量属于 Starlark 模块环境。本文用一个宿主回调示例拆开两者的可见范围、初始化时机和并发隔离边界。
-
go-vcard 的 VERSION 只是卡片版本标记,不能代表完整迁移。本文结合 ToV4 的实现说明 Card、字段参数和 Encoder 的关系,解释 TYPE=pref 为什么要转换为 PREF=1,并给出解析、转换、编码的 Go 写法与边界清单。
-
区分go-smtp服务端扩展声明、本地API与会话条件,解释Extension、SupportsAuth、TLS和SIZE判断,并给出不认证不投递的能力快照示例。
-
go-message 写邮件时,附件 WriteCloser 与外层 Writer.Close 不是同一层职责。本文从 multipart/mixed、传输编码和 MIME 终止边界解释关闭顺序,并给出可处理写入与收尾错误的 Go 示例。
-
go-imap 的 Unselect 只退出当前邮箱而不清理\Deleted邮件;UnselectAndExpunge 实际发送 CLOSE,会静默执行 EXPUNGE。本文用会话状态、数据影响和 Go 封装示例说明两者如何选择。
-
Paho MQTT 的 OrderMatters 默认开启时,消息回调不能阻塞或直接调用可能阻塞的库函数。本文解释它与消息顺序、回调 goroutine、worker queue 和 Publish 等操作的关系,并给出两种安全写法。
-
解释Go JetStream异步发布的即时错误、Future确认与错误通道,给出小批量结果归集示例,说明Complete、超时未决和退出清理的边界。
-
Go 使用 nats.go 异步订阅时,回调处理速度落后会让订阅 pending 队列上涨并触发慢消费者。本文解释消息数与字节数限额、Pending/Dropped 证据、SetPendingLimits 的边界,以及客户端队列与服务端连接缓冲的区别。
-
go-diff 的 PatchApply 不只返回修改后的文本,还会返回每个补丁是否匹配成功的布尔数组。本文说明如何生成、序列化、解析并应用补丁,以及为什么部分失败时不能只看最终字符串。
-
go-runewidth 的全局函数都绑定 DefaultCondition,独立 Condition 则保存自己的宽度策略。本文拆开两种作用域、CreateLUT 缓存和多终端配置的取舍。
-
go-pretty/table 的 RowPainter 接收整行并返回 text.Colors,适合按状态或排序位置统一着色。本文说明回调契约、SetRowPainter 的覆盖关系、RowPainterWithAttributes 的行号语义,以及空行和禁色场景的处理。
-
Go 字符串的 UTF-8 字节长度、rune 数量、用户感知字符数量和等宽显示宽度解决的是四类不同问题。本文用 uniseg.StringWidth 对比组合字符、中文和 emoji,给出选择指标与最小检查代码。
-
go-i18n 中 MessageID 负责定位消息资源,DefaultMessage 负责资源缺失时的完整回退消息。本文说明两者的优先级、复数模板边界与生产代码选择方法。
-
Go jsonschema 校验数字时,真正影响 integer、number 和范围判断的,不只是 Schema,还包括 encoding/json 把输入解码成什么 Go 类型。本文拆开 float64、json.Number 和整数类型的取舍。
-
gojq 把 Run 的查询输入和 input/inputs 读取的额外输入流分开设计。本文用 WithInputIter 与 gojq.NewIter 演示如何提供输入迭代器,并说明 Iter.Next 的结束、错误和自定义数据源处理方式。