Go问答技术文章
-
webdav.Dir 接收的是本机文件系统根目录,而 WebDAV FileSystem 方法接收的是用斜杠分隔的逻辑资源名。本文说明两种路径的边界,并提醒 Dir 不会自动阻止目录内符号链接指向树外。280 收藏 -
Go 测试本机通过而 CI 失败,通常是工具链、模块目录、构建条件或运行资源不同。本文用环境摘要、关闭缓存、结构化日志和测试门禁,把模糊失败变成可复现、可对比的问题。279 收藏 -
Go 1.27 调整了 go tool trace -http 只写端口时的默认监听范围。本文说明 :6060、localhost、127.0.0.1 和 0.0.0.0 的区别,并给出远程查看时更稳妥的 SSH 端口转发写法。279 收藏 -
从 HTTP 客户端接线、连接复用、超时作用范围和代理及自定义 TLS 分支定位 net.Dialer 看似不生效的原因,并提供客户端构造示例。279 收藏 -
区分 time.Time 零值与 Unix epoch 的语义,说明 IsZero、Unix、可选时间字段和数据库时间字段应该分别怎样判断。278 收藏 -
从Wait提前返回与计数错误切入,说明WaitGroup零计数时Add必须先于Wait的规则,提供启动前登记、独立结果槽位示例,并检查Done配对、值复制和批次复用。278 收藏 -
修改环境变量后 Go 构建结果没有变化,不一定是缓存失效。本文区分运行时变量、构建参数和 cgo 外部依赖,给出缓存命中排查与安全重建方法。278 收藏 -
Go go/version.Compare 按 Go 工具链规则比较版本,本文用 beta、rc、语言版本和补丁版本说明排序关系,并给出输入校验与最低版本判断写法。278 收藏 -
Go ast.Preorder 返回可直接用 range 消费的 AST 节点迭代器。本文从 parser.ParseFile 开始,说明深度优先前序顺序、节点类型筛选、找到目标后 break,以及需要跳过子树时的 API 边界。278 收藏 -
Go 1.24 引入 os.Root,可把文件读写、创建和 fs.FS 访问限制在指定目录树内。本文用 OpenRoot、相对路径、Root.FS 和错误处理说明越界路径、符号链接、关闭责任及平台边界。278 收藏 -
Go 的 encoding/json.Number 代表 JSON 数字原文,Int64 只适合能表示为 int64 的整数文本。本文区分小数、指数形式、越界和格式错误,并给出 UseNumber 与可复用解析函数。278 收藏 -
sync/atomic.Pointer[T].Load 返回的指针不会因为一次原子替换就变成 C 语言意义上的悬空指针,但原子性也不会保护对象内部字段。本文用不可变快照拆开对象存活、指针槽位和字段并发访问三个边界。278 收藏 -
从标签表达式、文件名后缀和 GOOS/GOARCH 三层筛选解释 Go 文件为何被排除,并用 go list 定位实际构建集合。277 收藏 -
Go 的 os.ReadDir 会一次性返回目录条目,大目录容易让内存峰值随规模增长。本文用 File.ReadDir 分批处理、按需读取元数据和排序边界说明一套可回滚的排障方案。277 收藏 -
Go x/text/cases 的 Caser 可能带状态,不能因为它是值类型就直接在 goroutine 间共享。本文说明 Lower、Upper、Title、Fold 的并发边界,以及 String、Bytes、Transform 的选择。277 收藏