Go语言技术文章
-
Golang · Go问答 | 1天前 | 依赖管理 · go · go work sync go work vendor Go workspace inconsistent vendoring Go依赖同步
Go 多模块工作区出现 inconsistent vendoring 时,关键不是手改 vendor/modules.txt,而是先确认 GOWORK 和 use 范围,再同步工作区构建列表、整理模块依赖并重建 workspace vendor。本文给出可复用的排查、同步和 CI 验证步骤。192 收藏 -
同一个无时区日期在不同机器上出现一天偏移,通常不是日期字符串变了,而是解析位置没有明确。本文从 time.Parse 的 UTC 默认行为出发,说明 time.ParseInLocation 如何绑定 Location,并处理显式偏移、时区缩写、IANA 时区加载和夏令时边界。192 收藏 -
Ticker.Reset 要求间隔严格大于零,零值或负值会直接 panic;动态配置应先解析并校验,停用周期任务则使用 Stop,并在 select 中配合 nil channel。191 收藏 -
用 Go 1.27 的 goroutineleak profile 给集成测试增加可留存的并发泄漏证据,掌握 pprof 入口、测试采集、结果解读与 CI 边界。190 收藏 -
Go 中可寻址的值能调用指针接收者方法,是编译器对方法调用做了隐式取地址;接口实现仍严格取决于静态类型的方法集。本文用最小示例解释 T 与 *T 的差异,并给出赋值、API 设计和编译期断言的修复建议。189 收藏 -
Go 的 omitempty 在 encoding/json v1 中不会把值结构体当作空值。本文拆解零值判定规则,并对比指针、omitzero、IsZero 与自定义编码方案。189 收藏 -
Go 后台任务不应只用一条裸 goroutine 启动。本文实现 Start、Cancel、Wait 三段式生命周期,统一任务所有权、取消原因、退出等待、超时关闭和错误返回,并说明适用边界与测试要点。189 收藏 -
通过一个可运行的 Go 内存索引示例,讲清 RWMutex 的读写边界、不可变条目约定、写前准备、读快照、整表替换,以及竞态检测和基准测试方法。187 收藏 -
Go 的 runtime/secret 是实验性能力,适合把短生命周期令牌处理限制在 secret.Do 内;本文说明构建开关、堆与栈擦除边界、返回值设计及平台限制。187 收藏 -
CrossOriginProtection 并不会仅因缺少 Origin 而拒绝请求。本文结合 Go net/http 当前规则,说明 Sec-Fetch-Site、Origin、Host、请求方法与 403 排查方法。186 收藏 -
Go 1.27 允许结构体复合字面量直接使用提升字段名。本文用可迁移的 Go 示例说明新旧写法、字段选择规则,以及指针嵌入和字段重叠等编译边界。186 收藏 -
Go 的 embed.FS 会保留嵌入目录的路径层级。本文用 io/fs.Sub 裁剪资源根目录,再通过 http.FS 和 http.FileServer 提供静态文件服务,并说明 URL 前缀、错误处理与发布边界。186 收藏 -
Go 模糊测试里的种子会执行,但不一定产生新的覆盖边或被计为 new interesting。本文从种子语料、输入规范化、守卫条件和覆盖反馈入手,说明如何设计真正命中目标分支的最小种子。183 收藏 -
解释 Go Fuzz 失败输入为什么通常应保留到 testdata/fuzz,并区分真实实现缺陷、错误断言、非确定性、敏感数据和重复语料的不同处理方式。183 收藏 -
http.Request.Clone 会深复制 URL、Header 等可复制字段,但 Body 仍是共享的 io.ReadCloser。本文按出站可重放、入站有界和大流式请求给出安全选择。182 收藏