-
http.Header.Get 找不到请求头和请求头值为空时都会返回空字符串。本文用 http.Header、Header.Get 与逗号 ok 判断拆开这两个状态,并给出适合接口校验的写法。
-
Go 项目有 vendor 目录却仍访问代理,通常是命令没有使用 vendor 模式、vendor 不在主模块根目录,或执行的是 go mod tidy、go mod download 等模块管理命令。本文给出 -mod=vendor、GOMOD、GOWORK 和 modules.txt 的排查顺序。
-
MakeFromLiteral用Unknown表示非法字面量的不可用结果,不返回普通error。本文给出业务适配函数,说明诊断上下文保存、接口误用和完整源码解析的区别。
-
go/constant 的 constant.Shift 不按 int 或 int64 固定宽度截断整数。左移超过机器字长时会保留为大整数,读取时应使用 ExactString、BitLen 和 Int64Val 的精确标志。
-
说明 database/sql/driver.DriverContext、OpenConnector 与 Connector.Connect(ctx) 的职责分工,给出按 DSN 创建连接、传递取消上下文和兼容 Driver.Open 的最小实现思路。
-
用完整 Compose 示例按字节估算 strings.Builder 容量,提前检查输出预算后调用 Grow,说明中文长度、分隔符、追加容量语义和不预留时的回退方法。
-
os.Readlink 返回的是符号链接保存的目标文字。本文说明相对目标为什么要以链接所在目录为基准,如何处理绝对路径和错误边界,以及何时改用 filepath.EvalSymlinks。
-
Go netip.AddrFromSlice 可以把 4 字节或 16 字节切片解析为 netip.Addr。本文说明 IPv4、IPv6、长度错误、IPv4 映射 IPv6 与 AddrFrom4、AddrFrom16、ParseAddr 的选择边界。
-
Go 的 net/url.JoinPath 适合把基础 URL 与多个路径片段组合起来,并清理重复斜杠和相对片段。本文说明包级函数、URL.JoinPath、PathEscape、查询参数保留以及与 ResolveReference 的边界。
-
Go 的 fs.FormatDirEntry 可以把 DirEntry 转成适合人阅读的短文本。本文从目录读取、遍历输出和边界判断说明它与 FileInfo 格式化的区别。
-
Go math/rand/v2 的 ChaCha8 在同一份 [32]byte 种子和同一调用方式下可以复现原始 Uint64 序列;如果序列不同,优先排查种子字节、实例是否已被消费、Read 与 Uint64 是否交错,以及是否把 Rand 的派生方法误当成固定一步消费。
-
Go archive/zip 的 FileHeader.CreatorVersion 不是单纯的版本号,其中包含 ZIP 条目创建平台和版本信息。本文给出拆解高低字节、读取常见平台标识以及结合 ExternalAttrs 判断权限的实用写法。
-
Go io.LimitedReader 可以把下游读取限制在固定字节数内。本文从上传流和请求体场景出发,说明 LimitReader 的上限语义、EOF 判断、底层错误处理,以及为什么限制器不会自动关闭原始 Reader。
-
Go AddDate 按业务时区增加日历日,Add 增加固定时长。用完整示例比较钟表字段、UTC 偏移和实际间隔,解释跨夏令时的差异及不存在或重复时刻的边界。
-
database/sql 扫描 SQL NULL 时,普通 string、int 字段无法表达空值语义。本文从扫描失败现场入手,分别使用 sql.Null* 与 Go 1.22 的 sql.Null[T],再把数据库 DTO 转换为业务结构体,给出单行、批量查询和写回数据库的稳定做法。