Go语言技术文章
-
Golang · Go问答 | 3天前 | 依赖管理 · 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教程 | 3天前 | 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 收藏 -
讲清 html/template URI 上下文自动转义、template.URLQueryEscaper 与 url.Values.Encode 的边界,给出安全拼接单个和多个查询参数的 Go 示例。112 收藏 -
Go 基准测试中的 b.N 会随测量阶段变化,缓存一次结果会让后续迭代跳过被测代码,导致 ns/op 失真。本文用代码说明正确循环、计时边界和缓存命中测试的拆分方法。428 收藏 -
Go embed.FS 保留完整目录树,fs.Sub 可以把 web 子目录暴露为新的文件系统根目录。本文用最小代码说明路径变化、fs.ReadFile 检查方法以及接入 http.FileServer 时的常见错误。341 收藏 -
Go fuzz corpus 报格式错误时,先定位 testdata/fuzz 中的具体文件,再核对 go test fuzz v1、参数数量、类型与顺序,最后用单条语料完成最小复现。357 收藏 -
Golang · Go教程 | 3天前 | 事务 · go · database/sql · Go database/sql readonly TxOptions driver.ConnBeginTx
Go 的 sql.TxOptions.ReadOnly 通过 DB.BeginTx 传给 driver.ConnBeginTx,是否真正形成只读事务取决于驱动实现。本文拆解传递路径、错误边界和连接池收尾方式。458 收藏 -
t.Parallel 不是把子测试函数立即丢到后台执行,而是在调用点暂停,等父测试函数返回后再进入并行阶段。理解这个边界,才能正确处理循环变量、共享资源和测试并发上限。256 收藏 -
Go 的 database/sql Conn.Raw 只能在回调期间访问底层驱动连接。本文说明如何取得专用 Conn、判断驱动能力、处理 driver.ErrBadConn,并解释为什么不能把 driverConn 保存到回调之外。369 收藏 -
Go t.Run 名称含斜杠时,-run 会把测试全名按斜杠分段匹配。本文用 HTTP/GET 案例说明分段正则、双斜杠空片段、默认不锚定与精确筛选的写法。180 收藏