Go教程技术文章
-
Go Validator 的字段标签适合校验单个字段,密码与确认密码、起止时间等跨字段不变量需要结构体级校验。本文用 RegisterStructValidation 注册 StructLevelFunc,说明 ReportError、错误路径、初始化时机和安全边界。166 收藏 -
Go Validator 的 dive 用于把校验规则下沉到切片元素。本文用批量邮箱和订单明细示例说明容器规则、元素规则、嵌套结构体、错误下标与空值边界的写法。318 收藏 -
Go Squirrel 使用 PlaceholderFormat 在 Question、Dollar、Colon 和 AtP 之间转换数据库占位符,本文说明统一配置、args 对应、嵌套查询和字面问号的处理边界。339 收藏 -
Squirrel 的 Expr 可以把 SQL 片段与绑定参数封装成可组合的 Sqlizer。本文从普通参数、嵌套表达式、ToSql 和 PlaceholderFormat 四个角度说明怎样保持 SQL 与 args 的顺序一致,并避开字符串拼接和问号转义误区。115 收藏 -
使用 Squirrel Eq 构造可选筛选条件,通过完整函数区分省略、false、0、SQL NULL 和 IN 列表,并说明固定列名、占位符及 SQL 与 args 配对的边界。430 收藏 -
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 收藏