Go语言技术文章
-
Decimal.Equal 按数值比较,结构体 == 则比较 Decimal 的字段表示和其它字段。本文结合 *big.Int 指针、指数、零值与业务对象,说明如何排查相同金额比较失败,并给出 Equal、Cmp 和结构体比较的选择边界。138 收藏 -
Go Flock 的 Locked() 只反映当前 Flock 实例,不能代表其他进程是否持有同一路径的文件锁。本文用实例边界、TryLock 竞争、Unlock 生命周期和 Stat 元数据说明正确判断方式。229 收藏 -
Go Decimal 无法恢复进入 float64 前已丢失的十进制尾数和输入格式。通过相邻长小数示例区分浮点往返表示与原始输入,并说明字符串、整数系数入口及舍入策略的适用边界。397 收藏 -
解释 Go Flock 为什么不应在持锁期间删除锁文件:锁依附于已打开的文件对象,删除路径后后续进程可能打开新对象,从而绕过原来的互斥;文中给出安全释放和清理建议。249 收藏 -
Go Flock 的锁文件是协作路径,不是占用状态本身。本文区分磁盘文件、内核锁和 Flock 实例,说明 Unlock、Locked、TryLock、Stat 的用途,以及异常退出和跨平台场景下的判断边界。403 收藏 -
说明 Go CEL 如何在 Program 创建阶段用 OptOptimize 预计算常量参数,并通过复用同一个 Program 处理不同输入;同时区分运行时变量、OptPartialEval 与结果缓存。226 收藏 -
Go CEL 的 Extend 返回新环境,不会自动更新旧 AST 和 Program。通过新增库存预留变量的示例,说明在目标环境重新 Compile、区分纯新增声明的兼容边界,以及按环境版本管理规则缓存。216 收藏 -
Go CEL 的 cel.DynType 只放宽静态类型检查,不会替运行时输入自动转换类型。本文结合动态字段、操作符重载、类型守卫和短路条件,说明为什么 Compile 成功后 Eval 仍可能报错。211 收藏 -
Expr 中 7 / 3 与 7.0 / 3 的结果值和 Go 返回类型并不相同。本文说明整数文字量、浮点文字量、float()/int() 以及 AsFloat64/AsInt 的作用边界,帮助规则表达式稳定输出。328 收藏 -
Go Expr 自定义函数参数不匹配时为什么会在 Compile 阶段报错?本文用显式函数签名说明参数数量、参数类型和返回值约束的检查边界,并给出生产规则发布前的排查清单。348 收藏 -
Go Expr 可用 ?. 保护可空对象访问,再用 ?? 提供 nil 回退值。通过结构体环境示例,区分可空指针、缺失 Map 键、未知字段和空字符串,并保留编译与运行错误的处理出口。431 收藏 -
Doublestar 默认会把静态前缀不存在视为无匹配结果。本文区分空结果、ErrBadPattern、ErrPatternNotExist 与普通 I/O 错误,并给出 WithFailOnPatternNotExist 的迁移写法。490 收藏 -
Go Doublestar 的 Glob 面向 io/fs,模式固定使用正斜杠;FilepathGlob 面向宿主机路径,会按系统处理输入并返回系统分隔符。本文用同一类递归匹配场景说明两者的选择边界。101 收藏 -
Go Pond v2 的 Stop 是单向生命周期操作:停止任务池后,新的 Submit 不再被接受,并通过 ErrPoolStopped 返回结果。本文说明停止边界、并发提交时序、错误处理方式,以及需要继续接收任务时如何创建新池。264 收藏 -
Go Doublestar 的 **.md 与 *.md 一样只匹配单个文件名段,递归应使用 **/*.md。结合内存文件树示例,说明双星号位置、零层目录、Match 与 Glob 路径基准及空结果的区别。408 收藏