Go语言技术文章
-
用 Go JetStream 客户端监听 KeyValue bucket 的键变化,拆清初始快照、nil 分界、实时更新、删除标记、revision 以及常用 WatchOpt 的选择。173 收藏 -
Go 使用 nats.go 异步订阅时,回调处理速度落后会让订阅 pending 队列上涨并触发慢消费者。本文解释消息数与字节数限额、Pending/Dropped 证据、SetPendingLimits 的边界,以及客户端队列与服务端连接缓冲的区别。237 收藏 -
介绍Go NATS客户端用NewMsg、Header.Set与Add附加消息头,通过PublishMsg发送并读取单值和多值字段,区分发送成功与业务处理确认。149 收藏 -
go-diff 的 PatchApply 不只返回修改后的文本,还会返回每个补丁是否匹配成功的布尔数组。本文说明如何生成、序列化、解析并应用补丁,以及为什么部分失败时不能只看最终字符串。386 收藏 -
使用 Go go-diff 的 diffmatchpatch 按行压缩两段文本,经过 DiffMain 计算差异后还原原始行,并处理语义清理、换行和 UTF-8 边界。479 收藏 -
go-runewidth 的全局函数都绑定 DefaultCondition,独立 Condition 则保存自己的宽度策略。本文拆开两种作用域、CreateLUT 缓存和多终端配置的取舍。316 收藏 -
go-pretty/table 的 RowPainter 接收整行并返回 text.Colors,适合按状态或排序位置统一着色。本文说明回调契约、SetRowPainter 的覆盖关系、RowPainterWithAttributes 的行号语义,以及空行和禁色场景的处理。456 收藏 -
使用 go-pretty/v6/table 把同一组表头和数据行导出为 Markdown,说明 AppendRows、页脚、RenderMarkdown、PadContent 以及列数和特殊字符边界。136 收藏 -
使用 go-runewidth Condition.Wrap 按终端显示列数折行,说明字节数与 rune 数的区别、逐行测宽、控制字符输入约束及 ANSI 和复杂字符边界。273 收藏 -
Go 字符串的 UTF-8 字节长度、rune 数量、用户感知字符数量和等宽显示宽度解决的是四类不同问题。本文用 uniseg.StringWidth 对比组合字符、中文和 emoji,给出选择指标与最小检查代码。105 收藏 -
用 Go uniseg 的 Graphemes.LineBreak 判断每个 grapheme cluster 后面是禁止、可选还是必须换行,并说明何时应改用 FirstLineSegmentInString。262 收藏 -
go-i18n 中 MessageID 负责定位消息资源,DefaultMessage 负责资源缺失时的完整回退消息。本文说明两者的优先级、复数模板边界与生产代码选择方法。391 收藏 -
使用 go-i18n TemplateData 向消息模板传入命名字段,对比 map 与结构体,解释 PluralCount 的独立职责、缺键处理和网页输出转义。262 收藏 -
Go jsonschema 校验数字时,真正影响 integer、number 和范围判断的,不只是 Schema,还包括 encoding/json 把输入解码成什么 Go 类型。本文拆开 float64、json.Number 和整数类型的取舍。303 收藏 -
Go jsonschema/v5 可以把 JSON Schema 编译成可复用的 *jsonschema.Schema。本文用一个小例子说明如何只编译一次、重复校验多份文档,并区分解析错误、编译错误和 ValidationError。194 收藏