Go语言技术文章
-
Go 泛型约束允许某些类型,不代表一次调用可以让不同实参各自选择类型。本文从类型推断、无类型常量和可赋值规则入手,定位接口约束通过但调用仍类型不匹配的原因。443 收藏 -
Go 中通常把 sync.Mutex 作为值字段嵌入结构体,再用指针接收者编写方法。本文解释值接收者为何会复制锁,以及何时才适合使用 *sync.Mutex。443 收藏 -
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 自动化任务常常不是启动后一直跑到底:触发端取消、排队中的任务和已经开始的 worker 都要收到同一个 context 信号。本文用一个小型任务流水线说明 Done、Err、cancel 与 Wait 的职责边界。442 收藏 -
Go 的 os.File.Sync 用来把当前文件内容提交到稳定存储,但它不是 Close 的替代品。本文用同一段程序验证 Write、Sync、Close 的职责边界,并给出错误处理和落盘场景的判断方法。442 收藏 -
ResponseRecorder适合验证处理器输出,但不能代表真实连接和协议行为。本文用状态、Header、正文、Flush与NewServer测试分层补齐覆盖边界。442 收藏 -
说明 Go archive/zip 如何使用 OpenRaw 和 CreateRaw 原样复制已压缩条目,覆盖 FileHeader 复制、中央目录收尾、重名处理、ErrInsecurePath 与 CreateHeader 的适用边界。442 收藏 -
Go Handler 读取请求体后下游为空,通常是前置组件消费了 Request.Body。本文给出解析一次传递 Payload、兼容旧下游重建 Body,以及大小限制和错误处理方案。442 收藏 -
Go 使用 cipher.NewGCMWithTagSize 兼容既有 AES-GCM 协议时,需要固定 12 到 16 字节的认证标签长度,并让 Seal、Open、nonce 和附加数据配置保持一致。本文用一个小项目示例说明参数选择、错误判断和迁移边界。442 收藏 -
Go 的 rsa.EncryptOAEP 与 rsa.DecryptOAEP 必须使用相同 label。本文用用途名、数据类型和版本构造稳定 label,封装专用解密入口,并说明错用密文、统一错误处理、哈希一致和真实性边界。442 收藏 -
Go 的 html/template.URLQueryEscaper 适合把模板参数放进 URL 查询值,但它不是多值参数构造器。本文对照空格、加号、& 和 url.Values.Encode 的输出,给出可复核的写法与边界。441 收藏 -
Go 泛型约束中的 int 只匹配精确的 int 类型,~int 才会接纳底层类型为 int 的命名类型。本文用最小代码和类型集合说明两者差异。441 收藏 -
用 Go 的 multipart.Reader 逐个接收多个上传文件,配合 MaxBytesReader 和 LimitReader 控制请求总量、单文件大小,并正确处理 EOF、超限和临时文件清理。441 收藏 -
iter.Seq2 的 K、V 是按值传给 yield 的,不能靠取 range 变量地址消除复制。本文对比指针返回、ID 句柄和保留值返回,给出生命周期、并发与提前停止的实用边界。441 收藏