Go教程技术文章
-
用 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 收藏 -
用 go.work 和 use 组织多个 Go 模块的本地联调,并通过 GOWORK=off 完成发布前的独立校验。372 收藏 -
把 Go 结构化输出测试从脆弱的长字符串断言迁移到 golden 文件:先稳定序列化,再用 -update 显式更新基线,最后输出可审阅的差异,避免测试被悄悄改绿。125 收藏 -
Go Benchmark测量分配次数,需先明确一次操作、夹具准备与结果生命周期。本文用分规模字节拼接示例说明ResetTimer、ReportAllocs和三类指标,避免把初始化或缓冲区复用误当成优化收益。306 收藏 -
用 Go 原生 fuzz 测试给文本解析器加入种子语料、Fuzz 函数和错误分类,区分预期的输入错误与需要修复的崩溃、越界和状态不一致。196 收藏 -
用 Go httptest.Server 搭建可控的外部 API 替身,检查请求方法、路径、请求体和响应错误,并处理响应体与测试服务的关闭边界。490 收藏