-
GoLand 默认并不提供“按需折叠单个方法”这类开箱即用的能力,通常需要借助 //region 和 //endregion 手动把代码包起来;同时还得在设置里开启 Custom regions,确认当前文件类型识别无误,并且保证注释成对、书写严格对应,否则很容易出现折叠位置错乱的问题。GoLand
-
archive/tar 的 Header.Name 不能直接拼接到解压目录。本文从 tar 条目检查、filepath.IsLocal 与 Rel 校验入手,给出拒绝绝对路径和 .. 逃逸的 Go 示例,并补上符号链接、文件大小和失败回滚边界。
-
time.Time.AppendText 从 Go 1.24 起提供面向 encoding.TextAppender 的 RFC 3339 文本输出。它适合把时间追加到已有字节缓冲区,但要处理错误返回,并注意它保存的是时区偏移而不是 Location 名称。
-
Go HTTP 客户端用 multipart.Writer 同时上传文件和表单字段时,应使用 WriteField 与 CreateFormFile 写入同一个 body,最后 Close 并复用 FormDataContentType 设置请求头。本文给出完整写法、资源关闭顺序和常见排查点。
-
Go 用 archive/zip 生成的 ZIP 无法打开时,先检查条目写入、zip.Writer.Close 和底层输出的关闭顺序,再用 zip.Reader 区分截断、写入失败与 CRC 校验问题。
-
Go 的 http.Client 返回响应后,Response.Body 不读取、不关闭,或每次新建 Client,都可能让 Transport 无法复用持久连接。本文用原创示例拆开 Body 生命周期、读取策略和连接池排查方法。
-
Go 切片 append 后另一个切片内容跟着变化,通常是因为容量足够时仍共享底层数组。本文用 len、cap 和最小示例区分共享与扩容分支,并给出 copy 与 slices.Clone 的隔离写法。
-
Go 解析 X.509 证书时,未知扩展应从 Certificate.Extensions 读取原始 OID、Critical 和 Value;重新生成证书则使用 ExtraExtensions,并单独处理未知关键扩展。
-
Go maps.Equal 比较包含 NaN 的映射时返回 false,是因为它按 == 比较值,而 NaN 不等于自身。本文解释值与键的边界,并给出 maps.EqualFunc 的业务比较写法。
-
Go 的 File.Sync 只针对已经打开的文件描述符提交数据和文件元数据,临时文件 Rename 后的目录项仍属于父目录。本文拆分三层持久化边界,并给出 Go 的安全替换写法与平台注意事项。
-
用 Go atomic.Pointer 替换进程内共享配置时,关键不是把指针换掉,而是保证读线程拿到完整快照、发布顺序清楚且失败时能回到旧版本。本文用一份可运行的配置结构说明初始化、原子发布、校验和回滚边界。
-
Go 1.24 为 net/http 增加 HTTP2Config 与 Protocols 配置。本文从服务端并发流限制和客户端兼容验证入手,说明 HTTP2Config 适合解决什么问题、哪些字段只对服务端生效,以及如何用最小代码确认协议协商结果。
-
Go 用 archive/zip 解压外部归档时,不能直接拼接成员名。本文说明如何处理 zip.ErrInsecurePath,用 filepath.Localize 和 filepath.IsLocal 拒绝绝对路径、.. 与跨平台分隔符,并用 os.Root 限制写入目录边界。
-
用一个清晰判断区分 Context 元数据和业务参数:trace_id 等请求范围信息可以传播,userID、订单号和分页条件应回到显式函数签名,并用私有 key 与访问器收口类型断言。
-
go.mod 的 go 指令不是备注,它同时限定最低 Go 版本、模块源码的语言语义和依赖版本下限;本文用代码和版本关系说明它与 toolchain、GOTOOLCHAIN 的分工。