Go语言技术文章
-
Go 1.22 提供的 reflect.TypeFor[T] 可以直接取得类型参数 T 的反射类型。本文对比 reflect.TypeOf 的零值写法、指针 Elem 写法与 TypeFor 的迁移边界,说明哪些代码更清晰,哪些场景仍然必须保留动态反射。182 收藏 -
t.TempDir 的清理时机绑定调用它的 testing.T:父测试创建的目录会保留到所有子测试完成,子测试创建的目录只保留到该子测试树结束。本文结合并行子测试说明安全共享、隔离和清理顺序。181 收藏 -
slices.Collect 会把惰性 iter.Seq 完整物化为新切片,并从 nil 切片逐项 append。本文给出槽位、引用载荷与扩容峰值的估算方法,以及已知数量时用 AppendSeq 预分配、数量未知时限量或流式处理的写法。180 收藏 -
面向以 -cover 构建的长期运行程序,说明 Go runtime/coverage.WriteMetaDir 如何写出覆盖率元数据、如何准备目录,以及它与计数快照的边界。180 收藏 -
Go 的 crypto/sha512 同时提供 New512_256 和 New512。本文从算法身份、摘要长度、流式接口和协议迁移边界说明两者区别,并给出同一输入下的并排计算示例。178 收藏 -
Go 自动生成文档时,可以用 go/doc.Filter 把文档树裁剪成公开 API 视图。本文从 Package.Filter 的实际行为出发,说明名称过滤器、类型成员边界、包注释清空和复制文档对象时的取舍。178 收藏 -
Go 1.27 支持具体类型的泛型方法,但泛型方法仍不能直接满足普通接口方法。本文从方法签名、方法集、接收者和约束位置排查,并给出泛型类型、顶层函数与适配器三种修复方案。177 收藏 -
Go container/list 的 MoveToFront 只会移动属于当前链表的 Element。传入另一个链表创建的节点时,当前链表不会修改;本文用最小示例拆解症状、官方契约和节点归属修复。177 收藏 -
Go 调试 HTTP 响应时,httputil.DumpResponse(resp, true) 会读取并重新包装响应体。本文用一个完整示例说明记录响应后如何继续读取 Body,并梳理 body 参数、错误路径、关闭时机和大响应体边界。175 收藏 -
go test 显示 cached 却没有感知输入文件变化,通常是依赖没有进入测试缓存键。本文说明模块内文件、外部输入和环境变量的处理方法,并给出诊断与 CI 落地方案。174 收藏 -
多个 Go 实例首次启动时,如果只使用 O_CREATE 或先检查再创建,同一路径可能被重复打开并发生覆盖。本文用 O_CREATE|O_EXCL 把“谁能创建”变成一次性判断,并说明 os.ErrExist、写入失败清理和实现边界。174 收藏 -
用 Action、Package、Test 和 FailedBuild 读懂 go test -json 的换行 JSON 流,区分测试事件、构建事件与包级结果。173 收藏 -
用 Go testing/iotest.TimeoutReader 在测试中稳定制造一次读取超时,区分 ErrTimeout、EOF 和其他错误,并验证调用方只对临时超时执行有限重试。171 收藏 -
Golang · Go问答 | 2小时前 | go · https · net/http · GetCertificate TLS配置 Go ServeTLS TLSConfig.Certificates GetConfigForClient 内存证书
Go http.Server.ServeTLS 的证书文件参数可以为空,但前提是 TLSConfig 已通过 Certificates、GetCertificate 或 GetConfigForClient 提供证书。本文用最小代码和参数表说明内存证书配置、动态选证书与启动排查边界。168 收藏 -
Go runtime/metrics.Read 支持把指标名称放入可复用的 Sample 切片中批量读取。本文从定时采集场景出发,说明如何准备固定容器、按 ValueKind 取值、处理 KindBad,并在并发采集时隔离底层数组,减少不必要的采集分配。167 收藏