Go语言技术文章
-
用 Go 的 log/slog 配置 JSONHandler,在请求入口绑定 request_id、method 和 path,并把带字段的 Logger 传入业务层,统一结构化日志输出、分组、脱敏与性能边界。120 收藏 -
go.mod replace 用于当前主模块替换某个依赖的内容来源,go.work 则把多个本地模块聚合为同一工作区的主模块集合。本文比较两者的生效范围、冲突规则、适用场景和发布边界,并给出 GOWORK=off 验证方法。195 收藏 -
单仓多模块项目可以只提交 go.mod、go.sum、初始化脚本和忽略规则,让每位开发者在本地生成使用相对路径的 go.work,并让 CI 通过 GOWORK=off 独立验证模块,避免个人路径和工作区依赖污染版本库。257 收藏 -
Go 多模块工作区会把 use 中的本地模块同时视为主模块,可能遮住单个 go.mod 的依赖缺口。本文说明怎样用 GOWORK=off 复现独立构建、比较依赖边界,并用 require、可发布版本和 CI 单模块测试修复。274 收藏 -
go work sync 面向多模块 Go 工作区:它根据 workspace build list 和 MVS 选择依赖版本,并把相关结果同步回各模块的 go.mod。本文用对比方式说明 go.work、go work sync、go mod tidy 与 go get 的职责边界。370 收藏 -
本文给出 go.work 默认不入库、紧耦合单仓例外可入库的判断矩阵,并说明 go.work.sum、GOWORK=off、CI 双通道与变更权限如何约定。200 收藏 -
本文用 go.work 连接本地 API 与服务模块,避免 replace 污染 go.mod,并通过 GOWORK=off 测试和分阶段升级保持两个模块独立发布。201 收藏 -
从本地快速改动与跨环境复现两个联调目标出发,对比 Go Modules 的 replace 和 alpha/beta 预览版本,给出选择、检查与收口方法。479 收藏 -
本文用 go mod tidy -diff、go mod why 和 go mod graph 建立可回滚的依赖整理流程,解释新增、删除、版本变化和 indirect 注释变动的真实含义。247 收藏 -
Go 模块路径是包身份的一部分。本文给出保留旧入口、单一新实现、类型别名与函数包装的迁移方案,并说明如何排查双份包和正确使用 replace。347 收藏 -
用 Go Modules 的 replace 将主模块临时指向本地依赖,联调期间确认实际解析路径,提交前用 go mod edit -dropreplace 移除替换并检查模块文件差异。285 收藏 -
go mod tidy 加入看似未使用的模块,通常是因为它会扫描测试、工具、构建标签和跨平台源码。本文用依赖路径、模块图和可回滚命令说明如何判断该模块是否应该保留。400 收藏 -
通过 money 模块与 order 服务的小项目,演示如何拆分 Go 内部模块、用 go.work 本地联调、为子目录模块创建语义化版本标签,并用 v1 兼容规则与 /v2 路径维护清晰依赖边界。492 收藏 -
性质测试适合输入域宽、确定性强且能写出不变量的函数;示例断言更适合少量关键业务边界、精确输出和外部状态行为。本文结合 Go 原生 fuzzing,给出选择矩阵、幂等性示例、反例与混合测试清单。341 收藏 -
Go fuzz 发现失败输入后,真正应该提交到仓库的是 testdata/fuzz/FuzzXxx 下的 seed corpus。本文用一个可复用的流程说明如何重放、修复并让普通 go test 长期回归,同时区分 GOCACHE/fuzz 中的生成缓存。174 收藏