Go教程技术文章
-
本文用 go mod tidy -diff、go mod why 和 go mod graph 建立可回滚的依赖整理流程,解释新增、删除、版本变化和 indirect 注释变动的真实含义。247 收藏 -
用 Go Modules 的 replace 将主模块临时指向本地依赖,联调期间确认实际解析路径,提交前用 go mod edit -dropreplace 移除替换并检查模块文件差异。285 收藏 -
通过 money 模块与 order 服务的小项目,演示如何拆分 Go 内部模块、用 go.work 本地联调、为子目录模块创建语义化版本标签,并用 v1 兼容规则与 /v2 路径维护清晰依赖边界。492 收藏 -
Go fuzz 发现失败输入后,真正应该提交到仓库的是 testdata/fuzz/FuzzXxx 下的 seed corpus。本文用一个可复用的流程说明如何重放、修复并让普通 go test 长期回归,同时区分 GOCACHE/fuzz 中的生成缓存。174 收藏 -
以逗号分隔标签的规范化函数为例,用 Go Fuzz 检查编解码往返、幂等、UTF-8、排序与去重性质,并给出种子语料、运行预算和失败输入回归方法。226 收藏 -
用一个带版本、标志和长度字段的 Go 二进制帧解析器,演示如何设计 f.Add 种子语料,并在 FuzzParseFrame 中断言长度一致、保留位合法、编解码回环和内存独立性。460 收藏 -
TestMain 适合管理每个包只启动一次的昂贵资源,但不应承载单个用例的可变数据。本文用共享 httptest 服务演示包级生命周期、不可变入口、用例命名空间、t.Cleanup 与退出码处理,让并行测试共享资源而不互相污染。134 收藏 -
使用 Go 的 httptest.NewRequest 和 ResponseRecorder,在不启动真实网络服务的情况下测试 HTTP Handler 的状态码、Header、响应体以及成功和错误边界。304 收藏 -
Go 表驱动测试的价值不只是少写重复代码,更重要的是把有效输入、边界值和非法输入组织成可定位的子测试。本文用输入分区、语义化命名和 -run 精确重放整理一套实用写法。302 收藏 -
Go 批量任务如果靠定时轮询检查状态,既浪费唤醒次数又难以处理关闭流程。本文用 sync.Cond 把状态检查、等待和批量唤醒组织起来,并说明 Signal、Broadcast 与退出条件的选择。204 收藏 -
Go 1.27 为 go doc 增加 package@version 查询形式。本文说明如何查看指定依赖版本的 API,并区分 go.mod、go list 与文档查询的职责。193 收藏 -
用 Checker v2 在 Go 结构体标签中组合 trim、lower、required、email 和跨字段规则,让请求数据先清洗再校验,并统一输出结构化错误。299 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · 配置管理 · 错误处理 · 并发编程 · Go教程 · Go 并发初始化 共享配置 sync.OnceValue sync.OnceValues
Go 1.21+ 可用 sync.OnceValues 把共享配置与初始化错误作为一对结果缓存,避免 sync.Once 配合外部变量造成分散状态。本文通过可测试的 ConfigProvider 展示并发只加载一次、错误传播及不适合自动重试的边界。482 收藏 -
通过一个可运行的 Go 内存索引示例,讲清 RWMutex 的读写边界、不可变条目约定、写前准备、读快照、整表替换,以及竞态检测和基准测试方法。187 收藏 -
Go Context 适合携带 trace ID、请求来源等请求级元数据,不适合隐藏订单号、分页条件等业务参数。本文用类型安全的 WithValue 写法、显式 API 参数和取消传播示例说明边界。263 收藏