Go教程技术文章
-
Go context.Value 适合传递跨 API 边界的轻量请求元数据,但不适合可选参数、必需业务参数、大型对象或可变状态。本文用包私有 key、类型安全读写函数和 HTTP 中间件示例说明其边界。311 收藏 -
讲清 Go 泛型切片转换中 nil 与空切片的差异,使用 S ~[]E 保留命名切片类型,并给出类型推断与复制边界的实用写法。310 收藏 -
用Go x509.VerifyOptions校验证书时,Roots、Intermediates和DNSName分别承担什么职责?本文给出CertPool组装方法、常见错误排查顺序和吊销检查边界。309 收藏 -
Go testing.T.Cleanup 会在测试及其子测试完成后执行已注册回调,并按后注册先执行的顺序收尾。本文用资源依赖和子测试作用域说明怎样安排注册顺序,避免测试夹具提前失效。309 收藏 -
用 Go testing.T.TempDir 替代手工临时目录清理,掌握测试文件隔离、并行子测试、GOTMPDIR 与迁移边界。308 收藏 -
Go sync.Map.LoadOrStore 返回的 actual 是最终值,loaded 则说明这个值来自已有条目还是本次存入。本文结合空键、已存在键和并发竞争,说明如何用 loaded 判断初始化责任,避免把候选值误当成缓存结果。308 收藏 -
Go 的 uint64 乘法会静默保留低 64 位。本文用 math/bits.Mul64 拆出 128 位乘积,通过 hi != 0 判断溢出,并封装可复用的安全乘法函数。308 收藏 -
用 context.WithTimeout 和 exec.CommandContext 给外部命令设置截止时间,区分超时终止、启动失败与正常退出,并说明子进程清理边界。307 收藏 -
Go 的 sql.Conn.Raw 能在受控回调中暴露底层驱动连接。本文用 pgx CopyFrom 说明类型断言、生命周期、错误处理和连接池边界。307 收藏 -
用 Go 的 io.LimitedReader 控制流式读取上限,说明 N、n、EOF 与底层输入的关系,并给出读取固定片段和继续处理剩余数据的实用写法。307 收藏 -
Go 测试需要临时文件时,t.TempDir 可以创建测试专属目录,并在测试及其子测试结束后自动清理。本文说明目录生命周期、多次调用、并行子测试和 GOTMPDIR 的使用边界。307 收藏 -
Golang · Go教程 | 1星期前 | JSON · go · 泛型 · api设计 · encoding/json UnmarshalJSON 可选字段 零值 Go JSON处理 PATCH接口
Go 的 PATCH 接口如何区分字段缺失、null 与零值?本文用泛型 Optional[T] 保存 Set、Valid、Value 三态,完成解码、校验、更新与测试。306 收藏 -
Golang · Go教程 | 1星期前 | goroutine · go · pprof · 后台任务 net/http/pprof goroutineleak go tool pprof Go goroutine 泄漏剖析
用一个会遗漏 Stop 的最小后台 worker 复现 goroutine 泄漏,采集 Go 1.27 的 goroutineleak profile,定位阻塞代码并完成生命周期修复与复查。306 收藏 -
maps.Clone 只复制 map 的第一层键和值。本文用切片、map、指针和结构体示例拆开嵌套引用边界,并给出需要独立状态时的深复制写法与检查清单。306 收藏 -
Goja 的 Compile 会生成与 Runtime 解耦的 Program,可以只编译一次,再交给多个独立 Runtime 执行。本文用完整示例说明输入注入、运行错误、并发隔离以及 Program 缓存与 Runtime 复用的边界。306 收藏