Go教程技术文章
-
Go 1.23 起可用 slices.Backward 按降序索引反向遍历切片,无需复制或改变元素顺序。本文给出最小写法、提前停止、索引写回、结构体值语义、空切片和旧版本兼容示例。501 收藏 -
Golang · Go教程 | 1天前 | Go教程 · 可观测性 · net/http · HTTP客户端 · 请求头注入 http.Client Go RoundTripper HTTP耗时 Transport中间件
本文用一个可复用的自定义 RoundTripper 统一注入调用方请求头,演示如何克隆请求避免污染原对象,并分别记录收到响应头与读完响应体的耗时,同时说明并发安全和响应体关闭边界。500 收藏 -
Go 事务业务代码返回 nil 并不代表提交成功。本文用可复用的 WithinTx 函数分别处理 BeginTx、业务执行、Rollback 与 Commit 错误,并说明上下文取消、panic 和 sql.ErrTxDone 的边界。495 收藏 -
本文实现一个源阶段、转换阶段、过滤阶段和汇聚端组成的 Go 数据管道。每个阶段创建、发送并关闭自己的输出 Channel,下游只接收;同时用 context 处理提前结束,并说明多 worker 阶段如何等待全部发送完成后单点关闭。492 收藏 -
通过 money 模块与 order 服务的小项目,演示如何拆分 Go 内部模块、用 go.work 本地联调、为子目录模块创建语义化版本标签,并用 v1 兼容规则与 /v2 路径维护清晰依赖边界。492 收藏 -
讲清 Go time.Ticker 的停止语义、context 取消、慢任务丢 tick 与服务关闭等待,给出可直接改造的周期任务循环。491 收藏 -
Go 1.23 起可用 slices.Chunk 返回 iter.Seq,按固定大小惰性遍历连续子切片。本文用完整示例说明末尾短块、空输入、非法大小、容量裁剪、元素修改与批处理错误定位。487 收藏 -
Go weak.Pointer 适合做不阻止对象回收的弱索引:业务代码保留强引用,索引只保存 weak.Pointer,读取时用 Value 判断对象是否仍可用,并在失效后删除旧条目。487 收藏 -
Golang · Go教程 | 1天前 | 标准库 · 配置管理 · 错误处理 · 并发编程 · Go教程 · Go 并发初始化 共享配置 sync.OnceValue sync.OnceValues
Go 1.21+ 可用 sync.OnceValues 把共享配置与初始化错误作为一对结果缓存,避免 sync.Once 配合外部变量造成分散状态。本文通过可测试的 ConfigProvider 展示并发只加载一次、错误传播及不适合自动重试的边界。482 收藏 -
Go 的 multipart.Writer 默认使用随机 boundary,直接把请求体拿去做接口签名时可能导致同样字段生成不同字节。本文用 SetBoundary 固定边界,说明字段顺序、Close、Content-Type 和原始 body 字节的签名边界,并给出排查清单。471 收藏 -
Go 1.23 为 reflect.Value 增加了 Seq2,可把 map 统一为 key/value 序列,也能遍历数组、切片、字符串和双值迭代函数。本文从一次遗漏 map 值的故障出发,说明 CanSeq2 判断、各类型双值语义和提前停止边界。469 收藏 -
Go 中用 fmt.Errorf 的 %w 保留错误上下文,再用 errors.Is 沿错误链判断哨兵错误;本文还说明 %w 与 %v 的 API 暴露边界。468 收藏 -
Go unique 负责规范化可比较值,不提供 TTL、容量限制、手工失效、加载错误或命中统计。本文用服务配置场景拆分句柄层与缓存层,说明哪些需求必须继续使用业务缓存。467 收藏 -
sync.Pool 在池空时只有 New 非 nil 才会创建默认对象。本文用 bytes.Buffer 说明正确初始化、typed nil 陷阱、借用归还封装、状态重置和测试边界。466 收藏 -
围绕 Go maphash.Hash 的内部缓冲、Reset、String/Bytes 和 sync.Pool,说明如何按输入形态复用哈希状态并定位真正的堆分配来源。463 收藏