Go语言技术文章
-
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 收藏 -
gojq 把 Run 的查询输入和 input/inputs 读取的额外输入流分开设计。本文用 WithInputIter 与 gojq.NewIter 演示如何提供输入迭代器,并说明 Iter.Next 的结束、错误和自定义数据源处理方式。419 收藏 -
介绍 gojq RunWithContext 的查询取消方法,提供超时与迭代错误处理示例,区分停止等待和停止计算,说明扩展调用、结果限制与部分结果的边界。500 收藏 -
go-flags 的 optional 决定参数值能否省略,optional-value 决定裸参数出现时填入什么值。本文用三种命令行输入拆开两者与 default 的边界。321 收藏 -
使用 go-flags 的 Completer 接口为自定义命令行值返回前缀匹配候选,解释 Completion 的字段、指针接收者、choice 标签与空前缀处理。364 收藏 -
Kong 的 Bind 是解析器级依赖登记,Context.Run 的参数是本次命令执行的显式注入。本文用一个可复用的 Go CLI 示例比较两种方式的时机、作用域、接口绑定和选择边界。354 收藏 -
使用 Kong MapperFunc 和 TypeMapper 注册自定义区间参数,介绍 Scanner 取值、反射赋值、NamedMapper 与字段级绑定,并说明错误处理及语法兼容。263 收藏 -
Go Gonum 的最短路径结果不能只看 weight 是否为 0。本文结合 Shortest.To 和 WeightTo 的契约,区分源节点、零成本路径、不可达节点、未知节点与负环,并给出可复用的分类写法。226 收藏 -
Gonum 的 YenKShortestPaths 适合在非负权图中取得多条不含环的候选路径。本文从带权有向图构造、k 与 cost 参数、路径读取和边界处理几个方面说明如何使用。397 收藏 -
Go Gonum 的 BFGS 需要目标函数梯度,NelderMead 则只依赖函数值。本文用同一个目标函数对比两种方法的 Problem 写法、API 边界、函数求值成本和选型条件,帮助你避免因 Grad 缺失或梯度不可靠而选错方法。140 收藏