Go教程技术文章
-
Go sync.Map.LoadOrStore 返回的 actual 是最终值,loaded 则说明这个值来自已有条目还是本次存入。本文结合空键、已存在键和并发竞争,说明如何用 loaded 判断初始化责任,避免把候选值误当成缓存结果。308 收藏 -
Go 的 http.Request.PathValue 为空,通常不是参数丢了,而是请求没有经过包含命名通配符的 ServeMux 匹配,或测试中的通配符名称不一致。本文从匹配链路、最小实现、httptest 和 SetPathValue 四个场景说明排查与修复方式。501 收藏 -
Go testing/quick 的 Config 可以同时控制随机输入和检查次数:用 math/rand.New(rand.NewSource(seed)) 固定 Rand,用 MaxCount 限制迭代上限。本文说明两者的优先级、生命周期和失败定位边界。256 收藏 -
Go 的 FileMode 同时包含文件类型、普通权限和特殊权限。本文说明如何只替换权限位,正确构造 File.Chmod 入参,并处理 Unix 与 Windows 的语义差异。338 收藏 -
Go URL.ResolveReference 的基础路径末尾斜杠会改变相对路径合并位置。通过目录前缀对照和四条表驱动用例,区分目录基址、当前页面、根路径与查询引用,避免错误拼接。157 收藏 -
go list -json 可以直接给出 Go 包的 EmbedPatterns、EmbedFiles 以及测试嵌入字段。本文按普通包、内部测试包和外部测试包拆解查询方式,并说明如何把结果交给检查脚本。394 收藏 -
项目同时维护 mock、stringer 和资源生成指令时,go generate -run 可以按指令完整原文的正则匹配只执行目标任务。本文从一次误触发现场讲清匹配范围、精确写法、预览排查和防复发约定。453 收藏 -
用 Action、Package、Test 和 FailedBuild 读懂 go test -json 的换行 JSON 流,区分测试事件、构建事件与包级结果。173 收藏 -
Go 基准测试里的 ReportAllocs 不是全局开关。本文用 ResetTimer、b.N 和 b.Loop 拆开准备阶段与被测循环,说明怎样确认 allocs/op 和 B/op 只统计正确代码。423 收藏 -
Golang · Go教程 | 1天前 | 基准测试 · testing · 性能 · Go教程 · GOMAXPROCS RunParallel Go testing.B.SetParallelism 并行基准 IO吞吐
围绕 Go testing.B.SetParallelism 说明 IO 型 RunParallel 基准为何需要调整并发倍数,给出 p×GOMAXPROCS 的换算、独立 worker 写法、档位对比和连接池边界判断。404 收藏 -
Go testing.T.Cleanup 会在测试及其子测试完成后执行已注册回调,并按后注册先执行的顺序收尾。本文用资源依赖和子测试作用域说明怎样安排注册顺序,避免测试夹具提前失效。309 收藏 -
Go 的 flag.FlagSet 通过 ContinueOnError 把参数解析失败交给调用方处理。本文比较三种 ErrorHandling 策略,并给出可复用、可测试的解析函数写法。273 收藏 -
Go flag.BoolFunc 适合无显式值但需要每次触发动作的命令行开关。本文说明重复解析、显式值、错误处理,以及它和 Bool、Func、自定义 Value 的选择边界。246 收藏 -
Golang · Go教程 | 1天前 | 反射 · Go教程 · database/sql · Go database/sql Rows.Scan ColumnType ScanType 动态查询导出
Go 动态 SQL 导出不知道列结构时,可以先读取 Rows.ColumnTypes,再用 ColumnType.ScanType 返回的 Go 类型创建 Scan 指针;驱动不提供具体类型时回退到 any,扫描后复制字节切片并保留 NULL。381 收藏 -
用一个可复用的 TextUnmarshaler 类型接入 Go flag.TextVar,讲清默认值、错误处理以及 TextVar、Var、Func 的选择边界。479 收藏