Go语言技术文章
-
Go Humanize 用 IBytes 和 IBytesN 将字节数格式化为 KiB、MiB 等 IEC 单位。本文从单位边界、默认展示、总位数控制和大数值注意事项入手,给出适合文件列表与摘要展示的选择方法。166 收藏 -
使用 google/uuid.NullUUID 读写可空数据库字段,说明 Valid、SQL NULL 与零 UUID 的区别,给出扫描和更新函数,并解释空字符串、错误处理和接口更新三态。497 收藏 -
用 github.com/google/uuid 的 NewV7 生成带 Unix 毫秒时间前缀的 UUID v7,本文说明依赖安装、错误处理、排序边界、日志与发布检查,帮助 Go 服务把标识符生成逻辑放进稳定的生产边界。258 收藏 -
Go Decimal 的 DivRound 可以在单次除法调用中指定小数位数。本文用字符串构造 Decimal,说明 precision、正负数舍入、负精度和 StringFixed 展示之间的区别。475 收藏 -
本文用一个最小 Go 结算示例说明 shopspring/decimal 如何通过 RoundBank 实现银行家舍入,涵盖字符串金额解析、保留两位小数、中点取偶数、负数与 StringFixed 展示边界。430 收藏 -
从原始字符串直接构造 shopspring/decimal 小数,比较字符串、浮点数和整数入口,提供带错误处理的完整示例,并区分精确数值、业务约束和固定小数显示。252 收藏 -
用 Go Flock 区分 RLock/TryRLock 与 Lock/TryLock 的适用范围,覆盖只读快照、文件更新、非阻塞降级以及共享锁升级的跨平台风险。126 收藏 -
用 github.com/gofrs/flock 的 TryLock 实现非阻塞进程互斥,区分 locked=false 与错误,安排 Unlock 清理,并用 TryLockContext 设置有限等待边界。317 收藏 -
Go Flock 可以用 TryLockContext 在限定时间内反复等待文件锁。本文用 context.WithTimeout 示例说明 bool、error、ctx.Err() 的判断方式,以及成功持锁后的 Unlock、retryDelay 和锁文件边界。113 收藏 -
用 CEL-Go 的 EstimateCost 做静态成本估算,再用 CostTracking 与 CostLimit 限制运行期求值预算;同时区分超限、业务错误和扩展函数成本。419 收藏 -
通过 CEL PartialVars 与 OptPartialEval 描述尚未提供的输入,用完整 Go 示例比较未知、false 和 true,说明属性模式、结果分类和补齐输入后的重新求值。112 收藏 -
用 cel.Variable 声明 CEL 输入变量,配合 Env.Compile 和 Env.Program 编译可复用的 Go 筛选表达式,并区分编译期与求值期错误。394 收藏 -
在 Go Expr 编译阶段用 AsBool 建立布尔返回契约,配合 WarnOnAny 处理 any 类型表达式,并区分编译错误、运行错误与结果接收边界。479 收藏 -
将 Expr 编译移出重复求值路径,保存并复用 vm.Program;通过完整 Go 示例说明 Env、AsBool、独立输入,以及规则更新和缓存失效的处理边界。204 收藏 -
Expr 的 Env 不是运行时数据容器,而是表达式编译时的输入声明。本文用结构体环境拆解 Compile 与 Run 的职责边界,说明字段、类型和运行值不一致时如何定位,并给出可复用的错误处理写法。357 收藏