Go语言技术文章
-
Go 使用 archive/zip 解包时,不能把 ZIP 条目名直接拼到目标目录。本文用相对路径校验、安全根目录映射和先校验后写盘的代码,处理绝对路径、../、反斜杠及 ErrInsecurePath,并说明符号链接和共享目录的额外边界。479 收藏 -
用 Go httptest.NewRequest 构造 Handler 入站测试请求:绝对 URL 提供 Host,https scheme 提供非 nil 的 dummy TLS 状态,并说明请求体 ContentLength、Host 覆盖以及与真实 TLS 服务端的边界。479 收藏 -
sort.Search 找的是谓词第一次返回 true 的位置,不是直接判断相等。本文用升序和降序切片说明先 false 后 true 的单调条件,并处理未命中、重复值、空切片和插入位置。479 收藏 -
用一个可复用的 TextUnmarshaler 类型接入 Go flag.TextVar,讲清默认值、错误处理以及 TextVar、Var、Func 的选择边界。479 收藏 -
Go 的 httptest.ResponseRecorder.Flushed 只表示 Handler 是否调用过 Flush。本文用最小测试拆开未调用 Flush、断言过早、ResponseWriter 包装和真实网络缓冲的区别。477 收藏 -
Go 使用 archive/zip 读取中文文件名异常时,先区分 UTF-8、CP437 和历史本地编码,再用显式解码与路径安全策略处理,避免把乱码或不可信路径直接落盘。476 收藏 -
对比 iter.Seq2 键值流的三种错误契约,给出可复用的泛型收集器,并说明 maps.Collect、终态错误与 Pull2 的边界。470 收藏 -
go fix inline 不是普通编译器优化,而是依据 //go:fix inline 注释对兼容入口提出源码替换建议。本文用函数、常量、类型别名和测试文件四个场景说明识别条件,并给出安全预览与落盘方法。468 收藏 -
Go os.Chmod 传入符号链接路径时会跟随链接修改目标文件。本文用 Stat、Lstat 和 Readlink 区分目标权限、链接对象与指向关系,并给出部署脚本的检查顺序。468 收藏 -
Go 中 os.Open 和 os.Stat 通常会跟随符号链接,os.Lstat 与 os.Readlink 则用于观察链接本身;Windows 还会受到链接权限、目标类型和卷路径处理影响。本文用一组小代码梳理不同打开方式,并给出跨平台读取与测试建议。464 收藏 -
Go fs.WalkDir 会在读取目录前先调用 WalkDirFunc。本文用最小可用代码说明如何返回 fs.SkipDir 跳过当前目录、用 fs.SkipAll 停止剩余遍历,并处理 err、根目录和普通错误边界。464 收藏 -
Go 的 httptest.NewUnstartedServer 适合在启动 HTTPS 测试服务前修改 TLS 策略。本文说明 TLS、HTTP Server 配置与 StartTLS 的先后关系,并给出测试客户端和迁移检查清单。463 收藏 -
用 Go 的 exec.Cmd.Environ 查看子进程实际配置的环境快照,理清 Dir、Env、PWD 和重复环境变量之间的覆盖关系,定位工作目录或环境变量不符合预期的问题。463 收藏 -
json/v2 中 omitzero 按 Go 零值判断,omitempty 按 JSON 空值判断。本文用字段类型、IsZero 和迁移清单说明如何选择。461 收藏 -
已有 database/sql.Stmt 需要在事务里执行时,用 Tx.StmtContext 把它映射为事务专用语句。本文说明 context 的作用、提交或回滚时的关闭边界,以及 DB 级 Stmt 与事务级 Stmt 的清理方式。461 收藏