Go问答技术文章
-
Go INI 的 Key 会把不存在的键转换成空值键,GetKey 才能保留缺失错误;MustString 则在键值为空时返回并写入默认值。本文用对照代码说明三者的边界和配置选择。217 收藏 -
Go INI LooseLoad 通过 Loose 选项跳过不存在的文件,不会忽略权限或解析错误。本文用必需主配置与可选覆盖层示例,说明路径错误、数据源类型和业务参数要求的边界。266 收藏 -
JSON Patch 的 test 是前置条件检查,不是数据库事务。本文说明 test 失败时为什么应丢弃 Apply 结果、保留原文档,并用事务或乐观锁把检查、变更和持久化收口为一次可提交的更新。132 收藏 -
JSONPatch 的 move 不是把元素瞬移到原数组坐标,而是先从 from 删除,再按删除后的数组执行 add。本文用 Go 示例说明同一数组中向后移动时目标索引为什么通常要减一,以及连续操作和 test 的处理方式。107 收藏 -
Merge Patch 对象成员中的 null 按 RFC 7396 表示删除。本文通过 Go 示例区分省略、删除与保留null,说明 JSON Patch 显式操作及数组、顶层值的语义边界。201 收藏 -
Go Validator 的标签语法会把逗号当作规则分隔符、把竖线当作 OR 分隔符。本文说明为什么它们不能直接写进参数,以及如何用 0x2C 和 0x7C 稳定表达要排除的字符。150 收藏 -
required_if 比较其他字段是否等于指定值,required_with 则在任一关联字段有值时触发必填。本文用生产请求结构体说明两者的触发条件、零值判断、多条件写法和发布检查边界。382 收藏 -
Go Validator 的 omitempty 会先判断字段是否为空,空值会直接跳过 min、gte 等后续规则。本文用最小结构体说明字符串、数字、指针和集合的边界,并比较 omitnil 与 omitzero 的选择。403 收藏 -
Squirrel 的 SelectBuilder 采用不可变 builder 语义,Where、OrderBy 等方法返回新值。本文说明为什么必须接收链式返回值,并给出基础查询、状态条件和排序分页的复用写法。363 收藏 -
Squirrel 的 Eq 遇到空切片时不会生成普通等号或 IN 空列表,而会生成恒假条件 1=0;NotEq 对应 1=1。本文说明空集合、SQL NULL、Where/Or 组合与跳过过滤之间的边界。377 收藏 -
Squirrel 将 []byte 视为单个数据库参数,而 byte 是 uint8 的别名,因此 []uint8 也不会自动展开为 IN。通过二进制值与数字集合示例,说明显式转换、空集合和参数绑定的边界。199 收藏 -
Go Cron 的 Remove 只移除未来调度,不会强行终止已经启动的 goroutine。本文拆开 Entry、调度器和任务执行边界,并给出用 context 主动取消任务的写法。300 收藏 -
Go Cron 同时设置日字段和星期字段时,不一定是两个条件都满足:robfig/cron/v3 在两者都为具体限制时按或匹配;使用 ? 留空其中一个字段,才适合表达只按日期或只按星期限制。329 收藏 -
robfig/cron/v3 默认采用分钟开头的五段规则。本文说明 WithSeconds 六段秒制、SecondOptional 兼容模式及 ParseStandard 的区别,并给出处理注册错误和停止调度的完整示例。494 收藏 -
Go Humanize 的 Bytes 和 IBytes 适合把字节数转成可读文本,但文本排序会受数字位数和单位影响。正确做法是保留原始字节数按数值排序,旧字符串则先用 ParseBytes 转回统一数值。422 收藏