Go语言技术文章
-
从包级变量的依赖分析、声明顺序和 init 函数边界入手,给出用最小运行标记与 go/types.InitOrder 确认 Go 初始化先后的方法,并说明多文件与隐藏依赖的限制。198 收藏 -
讲清 Go testing.B.ReportMetric 的参数、单位、b.N 归一化、b.Elapsed 计时指标、并行基准汇总和内置指标覆盖边界,配合可直接改写的 Go 示例记录自定义 benchmark 指标。411 收藏 -
旧式 Go // +build 语法中,空格表示候选项之间的 OR,逗号表示同一项中的 AND,多行约束还要继续做 AND。本文给出等价布尔式、现代 //go:build 写法和 go list 核对方法。331 收藏 -
Go 测试里用 testing.TB.Setenv 设置临时环境变量,再用 t.Cleanup 管理关联状态,可以让测试结束后自动恢复。本文说明清理顺序、并行边界和可执行检查方法。398 收藏 -
Go 的 //go:embed glob 没有匹配文件时会在构建阶段直接失败。本文从包目录、路径模式、单文件与 embed.FS 的差异出发,给出补文件、改路径和最小复查方法。333 收藏 -
Go internal 的可见性按导入路径中的父树判断,而不是按物理目录、仓库或 go.work 判断。本文用多模块示例拆开允许范围、排查命令与三种包边界修复方案。314 收藏 -
Go 自定义测试 helper 没有调用 testing.TB.Helper() 时,失败日志容易指向工具函数内部。本文说明 Helper 的正确位置、多层包装与并发边界,让错误行号回到业务测试调用处。349 收藏 -
围绕 Go testing.T.TempDir 讲清并行子测试的目录隔离、父测试共享只读夹具、自动清理和 GOTMPDIR 排查边界。251 收藏 -
Golang · Go问答 | 2星期前 | 依赖管理 · go · module · go mod download Go module retract Go 模块撤回 Go 依赖版本缓存 go list -retracted
Go module 的 retract 只改变自动版本选择,不会把已发布版本从代理或本地缓存抹掉。本文用 go list、go mod download 和 GOMODCACHE 排查撤回版本仍能下载的原因,并给出升级、保留和清理三种处理边界。368 收藏 -
用 Go log/slog 的 LogValuer 把敏感类型转换成只含安全字段的 slog.Value,掌握脱敏、Resolve 和多 Handler 输出的边界。466 收藏 -
Go 项目开启 vendor 后,不能只看目录是否存在。本文用 go env、go list -f 和 vendor/modules.txt 确认实际依赖目录,并解释构建命令与 go mod 命令的取源边界。113 收藏 -
Golang · Go教程 | 2星期前 | Go教程 · Go slog JSONHandler时间格式 HandlerOptions ReplaceAttr slog.TimeKey Go结构化日志时区 time.Time Format
Go log/slog 的 JSONHandler 没有直接的时间布局参数,本文用 HandlerOptions.ReplaceAttr 重建 time 属性,讲清 Go 时间布局、UTC、分组字段和零时间的处理边界。158 收藏 -
本地能通过、CI 却提示 module checksum 缺失,通常不是 Go 随机失败,而是本地缓存掩盖了缺少的 go.sum 条目,或 CI 的只读与模块下载环境不同。本文给出复现、补齐和固定构建输入的方法。487 收藏 -
Go text/template 的 missingkey 不是统一的必选项:default 保留兼容行为,zero 返回元素类型零值,error 让 Execute 立即失败。本文按模板用途给出选择方法和落地清单。204 收藏 -
Go 1.21 起,主模块 go.mod 的 go 行不能低于依赖模块的 go 行。本文区分自动工具链切换、直接失败与依赖回退,给出 go.mod、GOTOOLCHAIN 和 go.work 的排查与修复清单。367 收藏