Go语言技术文章
-
用 Go 1.23 的 iter.Pull 把 iter.Seq 转成 next/stop 逐项读取,覆盖 ok 判断、提前退出和 defer stop 的可复用写法。443 收藏 -
讲清 Go types.SizesFor 如何按 compiler 和 arch 选择布局模型,并用 types.Sizes 计算类型对齐、字段偏移与总大小,覆盖 nil、padding 和跨架构报告边界。443 收藏 -
本文说明 sync.Cond.Wait 为什么必须放在 for 循环里,解释唤醒事件与条件成立的区别,并用队列示例梳理 Locker、Signal、Broadcast 和共享状态的排障边界。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 huh 给输入框添加字段校验函数的关键是调用 Input.Validate,把字符串规则返回为 error;本文用空值、长度与业务约束说明如何组合校验,并处理错误显示、Value 绑定和可访问模式边界。442 收藏 -
用 cmpopts.EquateApprox 为 go-cmp 配置相对容差、绝对容差和接近零时的兜底边界,并说明 Equal、Diff、float32、NaN 与无穷大的排查方法。442 收藏 -
Golang · Go问答 | 1个月前 | HTTP · go · sse · net/http · net/http WriteTimeout SSE IdleTimeout Go HTTP 长连接空闲超时
Go net/http 的 IdleTimeout 主要管理 keep-alive 连接等待下一个请求,并不是 SSE 消息间隔计时器。本文区分 IdleTimeout、WriteTimeout、Flush、心跳和中间代理策略,给出一套可落地的 SSE 排查与处理方式。442 收藏 -
并发测试里固定随机种子仍可能复现不了同一结果,常见原因是多个 goroutine 共享 Rand 或 Source,调用顺序被调度改变。本文按当前 math/rand 规则解释并发边界,给出局部随机源、种子派生和 rand.Seed 迁移方案。442 收藏 -
Go Background 本身不保存请求值。本文区分派生上下文复用、共享可变对象和取消关系,提供每请求独立关联号中间件,并说明私有键、WithoutCancel 与后台任务的数据边界。442 收藏