Go教程技术文章
-
从批量校验场景出发,说明 Go errors.Join 如何保留多个失败原因、怎样通过 errors.Is 和 Unwrap() []error 遍历错误树,以及它与 errors.Unwrap 的边界。475 收藏 -
filepath.WalkDir 遇到根目录初次检查失败时,回调会收到 d=nil 和原始 err。本文用 Go 示例说明如何先处理错误、区分根目录不存在与权限问题,并把遍历结果安全交给上层。475 收藏 -
Go http.Client 的 Timeout 是客户端级兜底,context.WithTimeout 适合控制单次请求。本文用完整示例说明两者边界、超时错误判断、响应体清理和参数选择。475 收藏 -
Go 的 golang.org/x/text/secure/precis 提供 Nickname profile,适合对国际化昵称做空格映射、NFKC 归一化和等价比较。本文区分 String、Compare、CompareKey 的用途,并给出查重与错误处理写法。475 收藏 -
Go Zerolog 自带 level 字段,但接入统一日志平台时,业务常常还需要 severity 等固定字段。本文从字段不一致的排查场景出发,说明如何用 Hook.Run 读取 zerolog.Level,统一补充 severity,处理 NoLevel、全局 logger、局部 logger 和字段覆盖边界。475 收藏 -
Go Decimal 的 DivRound 可以在单次除法调用中指定小数位数。本文用字符串构造 Decimal,说明 precision、正负数舍入、负精度和 StringFixed 展示之间的区别。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 收藏 -
用MaxBytesReader限制Go HTTP请求体的实际读取字节数,识别MaxBytesError并返回413,说明完整读取、部分数据丢弃、Content-Length和JSON解析边界。474 收藏