Go教程技术文章
-
Go Cron 关闭时不要只调用 Stop 就退出进程。Stop 会停止新的调度,并返回一个 Context;等待它的 Done 通道,才能等正在执行的任务结束。本文再补上退出超时和任务主动取消的边界。382 收藏 -
robfig/cron/v3 默认会在独立 goroutine 中运行任务。本文用 SkipIfStillRunning 配置同一进程内的跳过策略,并对比 DelayIfStillRunning、单任务包装和多实例边界。157 收藏 -
Go Cron 可以在单个 Cron 表达式前加 CRON_TZ=Area/City,让该任务按独立 IANA 时区计算,同时保留调度器的默认时区。本文说明全局配置、单任务覆盖、错误处理与夏令时边界。345 收藏 -
用 Humanize CommafWithDigits 控制千分位显示的小数位上限,解释截取、不补零和负值行为,提供有限输入包装示例,并区分原始数值、展示文本与舍入需求。123 收藏 -
Go Humanize 的 ParseBytes 可以把 42 MB、42 mib 等用户输入解析为字节数。本文说明十进制与二进制单位的差异、非法输入和 uint64 溢出处理,以及何时改用 ParseBigBytes。211 收藏 -
用 google/uuid 的 MarshalBinary 和 UnmarshalBinary 在二进制协议中读写固定 16 字节 UUID,并处理短写、半包、长度错误与文本格式边界。281 收藏 -
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 收藏