Go语言技术文章
-
用最小字段写入示例讲清 Go reflect 的 Kind、CanSet 与 nil 接口,区分无效 Value、nil 指针和可写字段,并给出字符串及 *string 的安全处理方式。460 收藏 -
Go context.Deadline 返回的是绝对时间,不是剩余时长;读取时必须检查 ok,并在调用下游前区分无期限、已过期和预算不足。本文给出提前失败、子任务预算与取消函数的防御式写法。446 收藏 -
Go context.Value 适合传递跨 API 边界的轻量请求元数据,但不适合可选参数、必需业务参数、大型对象或可变状态。本文用包私有 key、类型安全读写函数和 HTTP 中间件示例说明其边界。311 收藏 -
用 Go errors.Join 收集并发任务错误,结合 errors.Is/As 做稳定判定,并把内部聚合错误转换成可控的用户返回结果。370 收藏 -
通过导出配额示例说明 Go 错误包装、哨兵分类与类型提取,给出可判断错误链的完整代码,并解释 As 目标指针、包装契约与底层细节的公开边界。474 收藏 -
Go go list 可以用模板或 JSON 输出包路径、目录、模块和依赖信息。文章从包列表、-deps、模板字段、结构化输出和模块模式几个边界出发,给出适合脚本与构建工具消费的稳定写法。446 收藏 -
用 Go log/slog 设计结构化日志字段时,把服务固定字段、请求上下文和事件字段分层,再用 Handler 统一分组与敏感字段脱敏,日志更容易检索和维护。450 收藏 -
围绕 Go NotifyContext 解释退出通知、独立清理超时和主协程等待,给出 HTTP 服务示例,并说明 stop、二次信号和清理顺序的边界。322 收藏 -
Go 读取 TLS 证书到期时间的关键是等待握手完成,再从 ConnectionState.PeerCertificates[0] 取得对端叶子证书,并读取 x509.Certificate.NotAfter。文章给出剩余时间计算、过期判断和客户端与服务端空证书边界的可复用写法。183 收藏 -
用 Go net/netip 完成地址解析、IPv4 映射识别、CIDR 前缀判断和稳定格式化,理清 Is4、Is4In6、Is6、Unmap、ParsePrefix 与 Masked 的使用边界。377 收藏 -
Go strings.Builder 的容量优化关键不在盲目调用 Grow,而在于按最终文本的字节数估算预算、用 Len 和 Cap 观察结果,并把 String、Reset 与禁止复制非零 Builder 的边界分清。374 收藏 -
用 Go container/heap 实现可改期、可取消的定时任务优先队列,说明堆接口、位置索引与延迟删除,给出完整示例及接入调度器的注意事项。395 收藏 -
Go sort.SliceStable 会按比较函数原地排序,并保持比较结果相等的记录在输入中的相对顺序。文章用带序号的记录拆开稳定性与副本两个问题,给出同键比较、原地排序和 copy 后排序的可用写法。300 收藏 -
用 Go time.ParseDuration 读取配置时长时,区分合法单位、空值默认、非法格式和业务范围校验,让超时与间隔配置在启动阶段可定位、可测试。119 收藏 -
长期运行的 Go worker 不应只等待 time.Ticker.C:把 ticker 的所有权交给 worker,用 context 定义退出条件,在退出路径调用 Stop,并根据周期变化选择 Reset 或重建,才能避免 goroutine 与定时任务生命周期失配。121 收藏