-
Go slices.All 会把切片转换成按顺序产生索引和值的迭代器,配合 range 就能保留传统遍历的两个变量。本文从返回类型、空切片、提前停止和写回原切片几个边界说明它的使用方式,并比较何时直接 range 更简单。
-
sync.Map 不是普通 map 的默认替代品。本文从访问模式、类型安全、复合更新和遍历语义四个角度,说明什么时候适合使用 sync.Map,什么时候应保留 map 配合 Mutex 或 RWMutex。
-
Go 的 http.Transport 默认会缓存连接,但连接池并不是无条件复用。每次重新创建 Transport、Response.Body 没有读完并关闭、主动关闭 keep-alive、空闲连接超时、每主机连接上限以及服务端协议设置,都可能让请求重新建连。本文用 httptrace 定位原因,并给出稳定的 Transport 管理方式。
-
区分Go HTTP客户端单次请求预算、响应体读取与外层重试总耗时,提供绑定Context并限制读体大小的示例,解释阶段超时、错误记录和资源释放。
-
Go json.Unmarshal 遇到 JSON null 时会按目标类型处理:指针字段被设为 nil,普通 string 等非指针字段通常保持原值。本文用结构体示例拆开指针、普通字段和字段缺省的边界,帮助排查接口入参中的 nil 现象。
-
Go time.Parse 出现差几个小时,通常不是时间被随机改写,而是输入中的时区信息与解析 API 的默认语义不一致。本文对比数字偏移、时区缩写、ParseInLocation 和 Time.In 的使用边界。
-
Go 的 HTTP 请求体是一次性读取流,前置中间件、表单解析或 JSON 解码器读到 EOF 后,后面的 io.ReadAll 就可能得到空结果。本文说明如何定位消费点、缓存原始字节、重置 Request.Body,并处理空请求体、大小限制和提前关闭等边界。
-
Go 1.25 起可以用 os.Root.Chtimes 在受限目录树内更新文件的访问时间和修改时间。本文说明两个时间参数、零值保留、精度、权限与平台边界。
-
Go 1.25 起可以用 os.Root.MkdirAll 在受限目录树内创建多级目录。本文说明 OpenRoot、相对路径、FileMode 权限参数、重复创建和迁移边界。
-
Go bytes.Buffer.Grow 只预留后续写入空间,不会增加 Len。本文区分 Len、Cap 与 Grow 的语义,并用拼接示例说明如何预分配容量、复用 Buffer 和处理参数边界。
-
Go 模块联调时,可用 go mod edit -replace 将已 require 的依赖临时指向本地目录。本文说明本地路径、module 路径、版本范围、验证命令和清理步骤,避免替换不生效或把本地配置提交到仓库。
-
Go 1.25 引入的 os.Root.Lchown 可以在受限目录内修改符号链接自身的数字 uid/gid。本文区分 Lchown 与 Chown 的作用对象,给出错误处理和跨平台排查要点。
-
Go 1.26 的 EncryptOAEPWithOptions 可以分别设置 OAEP 主哈希和 MGF1 哈希。本文按 Hash、MGFHash、label 与 RSA 模长四项参数,说明 Go 与 Java、OpenSSL 等对端如何建立可排查的 RSA-OAEP 互操作契约。
-
Go net/http Request.MultipartReader 适合把 multipart/form-data 请求按 Part 流式读取,避免 ParseMultipartForm 为大文件建立完整表单结构。本文说明文件与普通字段的分流、整体请求上限、单文件超限判断和错误清理。
-
Go x509 证书链验证通过信任检查后,仍可能被中间 CA 的 NameConstraints 拒绝。本文说明 PermittedDNSDomains、ExcludedDNSDomains、叶子证书 SAN 与 VerifyOptions 的关系,并给出错误定位顺序。