Go教程技术文章
-
Go 的 debug/buildinfo.ReadFile 可以离线读取指定二进制内嵌的工具链、主模块和依赖模块信息。本文给出完整示例,说明 Deps、Version、Sum、Replace 的读取方法及缺失边界。446 收藏 -
Golang · Go教程 | 1天前 | go · Go教程 · net/http · WriteTimeout SSE 流式响应 SetWriteDeadline Go ResponseController
Go 流式响应不适合直接套用服务器级 WriteTimeout。本文说明如何用 ResponseController 为单个 Handler 覆盖写期限,在每次 Write 与 Flush 前设置短窗口、成功后清除,并处理 ErrNotSupported、中间件 Unwrap、客户端断开与代理缓冲。446 收藏 -
Go 的 CertPool.AppendCertsFromPEM 返回 true 只表示至少一个 PEM 证书解析成功,并不代表所有证书有效或已经建立信任链。本文拆解 true/false 边界,给出逐块诊断和 Certificate.Verify 的分层判断方法。445 收藏 -
Go 1.24 起可以用 http.Transport.Protocols 显式区分 HTTP/1、TLS 上的 HTTP/2 与未加密 HTTP/2。本文给出仅 HTTP/1 和 HTTP/1 加 TLS HTTP/2 两种配置,说明如何不加入 UnencryptedHTTP2,以及零值、ForceAttemptHTTP2 和版本边界。445 收藏 -
Go 的 context.WithoutCancel 可以让收尾任务不继承请求取消,但它没有 deadline 和 Done;正确做法是再包一层独立超时,并复制必要数据。445 收藏 -
maps.All 返回绑定原映射的惰性迭代器,并不会在创建时复制数据。本文从修改时点、迭代中变更和并发边界说明真实语义,并给出 maps.Clone 与有序快照写法。445 收藏 -
Go zip.NewReader 不能直接接收普通 io.Reader。本文用 bytes.Reader 和临时文件说明如何提供 ReaderAt、准确 size,并正确处理 ZIP 成员资源。444 收藏 -
用 Go iter.Pull 把 iter.Seq 推送式迭代器转换成按需调用的 next 函数,说明 stop 的释放责任、提前退出和空序列边界。444 收藏 -
用 Go B.Run 与 B.Loop 对比 1 KiB、4 KiB、32 KiB、128 KiB 缓冲区,固定负载并隐藏 io.CopyBuffer 快速路径,结合吞吐和内存指标选型。444 收藏 -
Golang · Go教程 | 3星期前 | 标准库 · 定时器 · Go教程 · Go time.Timer Timer.Reset Timer.Stop 定时器复用 asynctimerchan 旧事件
Go 1.23 默认 timer channel 已不会让 Reset 后读到旧事件,但旧版本或 asynctimerchan=1 仍需 Stop、排空 t.C 再 Reset。本文按版本、接收状态和 AfterFunc 边界给出可复用写法。443 收藏 -
用 Go slog.LogValuer 延迟展开业务对象:以轻量包装器配合 GroupValue 控制字段、脱敏和派生计算,并说明自定义 Handler、可变对象与 Resolve 的边界。443 收藏 -
说明 Go archive/zip 如何使用 OpenRaw 和 CreateRaw 原样复制已压缩条目,覆盖 FileHeader 复制、中央目录收尾、重名处理、ErrInsecurePath 与 CreateHeader 的适用边界。442 收藏 -
Go 使用 cipher.NewGCMWithTagSize 兼容既有 AES-GCM 协议时,需要固定 12 到 16 字节的认证标签长度,并让 Seal、Open、nonce 和附加数据配置保持一致。本文用一个小项目示例说明参数选择、错误判断和迁移边界。442 收藏 -
Go 的 rsa.EncryptOAEP 与 rsa.DecryptOAEP 必须使用相同 label。本文用用途名、数据类型和版本构造稳定 label,封装专用解密入口,并说明错用密文、统一错误处理、哈希一致和真实性边界。442 收藏 -
Golang · Go教程 | 3天前 | goroutine · Context · Go教程 · 批处理 · 批处理 Timer WithTimeout Go context WithCancelCause 父子取消链
本文用 root、batch、job 三层 Context 组织批处理生命周期,演示系统信号、整批失败和单任务超时的传播边界,并说明如何及时调用 CancelFunc、停止重试 Timer 与 Ticker。441 收藏