Go语言技术文章
-
io/fs 使用斜杠分隔的虚拟路径,而本地文件 API 服从操作系统规则。本文拆开 fs.ValidPath、filepath.Localize 和 filepath.FromSlash 的职责,给出可复用的跨平台转换写法。224 收藏 -
Go 的 database/sql Conn.Raw 适合短暂访问驱动特有能力,但底层 driver.Conn 只能在回调期间使用。本文用一个连接池场景说明借用、错误传播、归还和并发边界。347 收藏 -
fs.ValidPath 适合校验传给 fs.FS.Open 的斜杠路径,但它不是本地路径检查器,也不会处理 URL 解码、符号链接和真实文件系统边界。本文用有效与无效样例梳理规则,并给出 HTTP、归档和本地路径场景的安全写法。374 收藏 -
filepath.WalkDir 遇到权限目录时,错误会通过回调参数传入,而不是自动跳过。本文区分入口访问失败与子目录读取失败,说明 d 和 err 的判断方式,以及 return nil、filepath.SkipDir 和原样返回错误的取舍。430 收藏 -
把临时文件处理从 filepath.Join、os.CreateTemp 和 os.Rename 迁移到 os.Root,关键是先固定根目录,再让创建、写入、改名和清理都使用相对路径。本文用一个生成 JSON 报告的小项目拆解迁移步骤,并说明 Go 版本、资源关闭和越界路径的边界。221 收藏 -
Go 中 os.Open 和 os.Stat 通常会跟随符号链接,os.Lstat 与 os.Readlink 则用于观察链接本身;Windows 还会受到链接权限、目标类型和卷路径处理影响。本文用一组小代码梳理不同打开方式,并给出跨平台读取与测试建议。464 收藏 -
使用 os.Root 后仍遇到路径校验失败,通常是把根目录再次拼入参数,或混淆了 io/fs 路径与本地路径。本文结合 IsLocal、Localize 和 Root.Open 梳理可直接落地的相对路径规则与排错方法。494 收藏 -
Go 1.24 的 os.Root 会在目录边界内解析符号链接,本文区分 Root 的访问校验与 Root.Symlink 的创建语义,说明根内链接、越界目标、绝对链接和资源释放的处理方式。160 收藏 -
Go 处理外部文件名时,filepath.Join 不能单独构成目录访问边界。本文结合 os.OpenInRoot 和 os.Root,说明固定目录、相对路径、符号链接、Root 生命周期以及平台限制应该怎样设计。331 收藏 -
UDPConn.ReadFrom 没有数据时会持续阻塞。本文用 SetReadDeadline 建立接收时间边界,说明 deadline 的绝对时间语义、循环刷新方式,以及如何区分超时、关闭和真实网络错误。108 收藏 -
go fix 会直接改写 Go 源码。本文从模块边界、包模式、构建配置、差异预览和 Git 检查点入手,整理一套可回滚的执行准备清单。421 收藏 -
Go 内置 DNS 解析器执行 A+AAAA 或搜索域子查询时,StrictErrors 决定临时错误是允许返回部分地址,还是中止整体查询。本文说明其作用范围、宽松与严格代码写法、DNSError 分类和兼容性取舍。457 收藏 -
go fix inline 不是普通编译器优化,而是依据 //go:fix inline 注释对兼容入口提出源码替换建议。本文用函数、常量、类型别名和测试文件四个场景说明识别条件,并给出安全预览与落盘方法。468 收藏 -
Go 程序直接使用 net.LookupIP 的第一个结果时,IPv4/IPv6 顺序变化可能造成连接变慢或失败。本文区分解析结果、RFC 6724 地址排序和 Dialer Fast Fallback,给出双栈排查、限族连接与安全回归写法。203 收藏 -
用 go fix modernizers 批量迁移旧标准库写法,先预览差异,再按 fixer、Go 版本和构建平台执行,并用测试确认语义边界。403 收藏