Go问答技术文章
-
Go 的 github.com/pkg/sftp 同时提供 Rename 和 PosixRename,但两者对已存在目标文件的处理语义不同。本文用远程发布场景说明覆盖边界、扩展探测和安全选型。214 收藏 -
Go 的 github.com/pkg/sftp 中,File.Close 释放远程文件句柄,Client.Close 关闭 SFTP 会话;本文用资源层级、defer 和错误处理示例说明两者的区别与正确关闭顺序。473 收藏 -
Go INI 的大小写不敏感不是只放宽查询,而是会把节名和键名规范化为小写。本文解释三个开关的作用、冲突覆盖风险与稳妥配置方式。463 收藏 -
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 收藏