Go语言技术文章
-
用 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 收藏 -
介绍 Go 业务时区的加载、无偏移时间解析、UTC 存储与地区显示,给出完整示例,并说明时区数据依赖、固定偏移和旧字段迁移的注意事项。239 收藏 -
Go 交叉编译时,CGO_ENABLED 不能单独决定结果。本文按纯 Go 与依赖 C 编译器两种场景,整理 GOOS、GOARCH、CGO_ENABLED、CC 的配置关系,并给出产物格式和动态依赖的检查清单。488 收藏 -
用 Go ldflags 把版本号、提交号和构建时间注入专用变量,讲清 -X 的路径写法、可复现构建边界、CI 参数和常见失效原因。182 收藏 -
Go 构建标签适合把平台差异放到文件选择阶段。本文从文件名约束、//go:build 表达式和默认实现讲起,再用 GOOS、GOARCH、CGO_ENABLED 与 -tags 组织可重复的交叉编译。476 收藏 -
GOPRIVATE只声明私有模块范围,不提供仓库凭据。本文通过直连仓库和内部代理两套临时配置,说明代理、公共校验数据库与认证的独立边界,并归纳CI和缓存相关误区。284 收藏 -
Go 项目同时存在 go.mod、vendor 和 CI 构建脚本时,使用 -mod=vendor、-mod=mod 与 -mod=readonly 可以明确切换依赖来源。本文说明自动模式、同步 vendor、CI 固定参数和发布前检查清单。351 收藏