Go语言技术文章
-
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 收藏 -
RWMutex 不会天然比 Mutex 快。本文用并发配置缓存说明读写锁的临界区边界、待写者阻塞新读者、不可升级降级等语义,并给出可调整读写比例的基准模板,帮助你按真实竞争场景做选择。325 收藏 -
通过一个可运行的 Go 内存索引示例,讲清 RWMutex 的读写边界、不可变条目约定、写前准备、读快照、整表替换,以及竞态检测和基准测试方法。187 收藏 -
Go 官方建议不要把 Context 保存进结构体,因为请求级取消、deadline 和值的生命周期会被对象复用混在一起。本文用按调用传递、生命周期检查和 net/http 兼容性例外说明该规则的边界。227 收藏 -
Go Context 适合携带 trace ID、请求来源等请求级元数据,不适合隐藏订单号、分页条件等业务参数。本文用类型安全的 WithValue 写法、显式 API 参数和取消传播示例说明边界。263 收藏 -
Golang · Go问答 | 1星期前 | golang · Context · 并发编程 · 超时控制 WithTimeout WithCancel Go context 取消传播 WithoutCancel
本文从停止权、时间预算和父级脱离三个维度比较 WithCancel、WithTimeout 与 WithoutCancel,解释父子取消传播、CancelFunc 回收、nil Done 风险,并给出请求后短任务的有界组合写法。202 收藏 -
Golang · Go教程 | 1星期前 | goroutine · Context · Go教程 · 批处理 · 批处理 Timer WithTimeout Go context WithCancelCause 父子取消链
本文用 root、batch、job 三层 Context 组织批处理生命周期,演示系统信号、整批失败和单任务超时的传播边界,并说明如何及时调用 CancelFunc、停止重试 Timer 与 Ticker。441 收藏 -
Golang · Go问答 | 1星期前 | goroutine · Context · 并发编程 · 故障排查 · Go问答 · channel WaitGroup Go context ctx.Done 阻塞排查 context.Canceled
Context 取消只会关闭 Done 通道,不会自动打断 channel 收发、WaitGroup、Mutex、Sleep 或不支持 Context 的 I/O。本文按取消链、阻塞点和下游 API 三层给出排查与修复方法。144 收藏 -
从 HTTP Handler 取出请求上下文,沿数据库查询和下游 HTTP 调用继续传递截止时间,说明 QueryContext、NewRequestWithContext、错误判断与资源清理的边界。336 收藏 -
Golang · Go问答 | 1星期前 | channel · golang · select · 并发编程 · 性能排查 · channel default分支 忙等 time.Ticker context取消 Go select
本文解释 Go select 的 default 分支为何会把阻塞等待变成高频轮询,并分别给出移除 default、加入 Context、使用 Ticker、封装单次非阻塞尝试及处理关闭通道的改法。465 收藏 -
Golang · Go教程 | 1星期前 | channel · select · Context · 并发编程 · Go教程 · context取消 time.NewTimer goroutine退出 Go select channel超时
本文给出一个可复用的 Go select 写法,同时监听任务结果、局部超时和上游取消信号,并解释缓冲结果通道、派生 Context、CancelFunc、ctx.Err、计时器释放及多个 case 同时就绪时的处理边界。250 收藏 -
无缓冲 Channel 强调发送与接收的同步交接,有缓冲 Channel 用有限队列吸收生产者和消费者的短时速率差异。本文从阻塞条件、业务语义、容量估算、关闭责任和取消路径说明如何做选择。421 收藏 -
Golang · Go教程 | 1星期前 | channel · Context · Go教程 · Channel关闭 context取消 发送方关闭 Go数据管道 Go pipeline 多阶段并发
本文实现一个源阶段、转换阶段、过滤阶段和汇聚端组成的 Go 数据管道。每个阶段创建、发送并关闭自己的输出 Channel,下游只接收;同时用 context 处理提前结束,并说明多 worker 阶段如何等待全部发送完成后单点关闭。492 收藏