Go教程技术文章
-
Go test -cover 默认只统计当前测试目标包。本文用 coverprofile 和 -coverpkg 对照说明包路径选择、依赖包覆盖率与 CI 统计口径的关系。475 收藏 -
strings.Builder 的 Reset 会把内部缓冲区置为 nil,不保留容量;已返回的字符串仍可能延长旧缓冲区生命周期。本文用最小示例梳理复用、清空、Grow 和对象池的边界。475 收藏 -
用 Go sqlmock 模拟事务第二次写入失败,按 Begin、Exec、Rollback 的顺序验证错误返回和回滚动作,避免测试误把提交当成成功。475 收藏 -
从批量校验场景出发,说明 Go errors.Join 如何保留多个失败原因、怎样通过 errors.Is 和 Unwrap() []error 遍历错误树,以及它与 errors.Unwrap 的边界。475 收藏 -
filepath.WalkDir 遇到根目录初次检查失败时,回调会收到 d=nil 和原始 err。本文用 Go 示例说明如何先处理错误、区分根目录不存在与权限问题,并把遍历结果安全交给上层。475 收藏 -
Go http.Client 的 Timeout 是客户端级兜底,context.WithTimeout 适合控制单次请求。本文用完整示例说明两者边界、超时错误判断、响应体清理和参数选择。475 收藏 -
当 goroutine 偶发卡住时,runtime/trace 能把任务、日志和调度时间线放到同一份证据里。本文用 trace.NewTask、trace.Logf 和 trace.Start/Stop 建立最小采集程序,再说明如何从任务延迟和阻塞区间定位问题。474 收藏 -
Go 1.27 的 go doc 可以直接查询 package@version。本文讲清它与当前工作区文档的差别、版本查询边界、私有模块配置和升级前核对方法。474 收藏 -
Go 读取超过内置范围的大整数时,应按输入形态选择 math/big 的 SetString、fmt.Sscan、JSON 解码或 SetBytes,并在 String、Text、Bytes 和 int64 转换之间处理进制、符号与范围边界。474 收藏 -
围绕 Go tls.Config 的 SetSessionTicketKeys,说明服务端会话票据密钥的默认自动轮换、手动 key ring、多副本同步、旧 key 移除和回滚边界。474 收藏 -
CPU Profile 只能定位 CPU 采样热点,不能单独证明优化收益。本文用固定工作负载、重复 Benchmark、benchstat 与前后 Profile 对比建立验证链,避免单次数据、环境漂移和热点转移造成误判。474 收藏 -
通过导出配额示例说明 Go 错误包装、哨兵分类与类型提取,给出可判断错误链的完整代码,并解释 As 目标指针、包装契约与底层细节的公开边界。474 收藏 -
bytes.Buffer 的可用空间要看 Available,而不是只看 Cap。本文结合 Len、Cap、Available 和 Grow,说明如何估算当前缓冲区的剩余容量,以及读取、复用和扩容时的实际边界。474 收藏 -
Go iter.Seq2 的两个 yield 参数需要明确业务含义,回调 bool 则表示是否继续。通过原切片索引与任务值的完整示例,解释过滤编号、提前停止、Go 1.23 要求、回调兼容写法及闭包所有权边界。474 收藏 -
解释 encoding/csv.Reader.ReuseRecord 的切片复用语义,演示批量读取时如何降低分配,以及需要长期保存记录时如何避免数据被下一次 Read 覆盖。473 收藏