Go语言技术文章
-
Go 的 crypto/mlkem 把 ML-KEM 密钥分成私有的 DecapsulationKey 和公开的 EncapsulationKey。本文说明 GenerateKey、Bytes、New*Key 的对应关系,并整理 768/1024 参数集的序列化长度与工程基线。484 收藏 -
Timer Reset 后立刻超时,通常与旧版缓冲计时器通道中的过期值有关。本文对照 Go 1.23 前后语义,给出 chan-based Timer 的复用写法、AfterFunc 边界、版本判断和回退检查清单。484 收藏 -
调用泛型函数时,只要普通实参或明确的目标函数类型能唯一推断缺失类型参数,通常可以省略;类型参数只出现在结果中、函数值没有目标类型、nil 等实参不提供类型信息时,就要显式填写。泛型类型则始终需要显式类型实参。484 收藏 -
区分Go http.Client.Timeout与Transport阶段超时,明确拨号、TLS、响应头、响应体和业务代码的时间边界。484 收藏 -
Golang · Go教程 | 2个月前 | 性能优化 · Go教程 · net/http · 兼容性 · Preload Go net/http ErrNotSupported http.Pusher HTTP/2 Server Push Early Hints
Go 的 http.Pusher 仍可探测,但 Push 在客户端禁用或连接不支持时会返回 ErrNotSupported。更稳的资源加载方案是以最终 HTML 为主,按首屏预算组合 preload 与 103 Early Hints,把 Push 降级为可选加速。484 收藏 -
Go 服务端中间件读取 http.Request Body 后,下游为什么只能拿到空内容?关键在于 Body 是一次性读取流,读取后要用缓存字节重建 Request.Body,并同时控制请求体大小与错误分支。484 收藏 -
Go 动态拼接正则表达式时,先用 regexp.QuoteMeta 转义用户输入,才能让点号、括号、加号等字符按字面匹配;本文同时说明模式结构、Compile 错误和替换模板的边界。484 收藏 -
解释 Go interface 装入 nil 指针后仍不等于 nil 的原因,拆开动态类型和值的比较规则,并给出 error 返回、类型断言与反射边界的实用处理方式。484 收藏 -
Go 在 riscv64 上出现结构体复制后 []byte 内容异常,通常不是切片共享导致,而是编译器优化写回错误。本文用 issue #80127 的复现现象拆开判断边界,并给出 CI 对照与升级检查清单。484 收藏 -
用 Go iter.Pull 构建受限整数收集器,区分 nil 迭代器、空序列、合法零值、解析错误与提前停止,提供完整代码,并解释 defer stop、panic 传播和资源清理的边界。483 收藏 -
Go 模块发布后发现严重问题时,可以用 retract 标记单个版本或闭区间,让后续版本选择避开它,同时保留已有项目的可复现构建。本文说明 go.mod 写法、承载版本、go list 查询与旧工具链边界。483 收藏 -
GoLLRB 的 DeleteMin 会删除并返回有序树中的最小元素,空树返回 nil。本文对比 Min 与 DeleteMin,演示 llrb.Int、类型断言和连续消费时的停止条件。483 收藏 -
连接超时不限制响应体读取。通过有限响应客户端示例区分拨号、响应头和总预算,处理 context 生命周期、读取错误、正文大小与关闭责任,并说明流式请求的不同策略。483 收藏 -
Go errors.As 返回 false 时,先看错误实现的 Error 接收者和实际动态类型,再决定目标变量是 *T 还是 T。本文用一个小型校验错误示例说明指针错误、值错误、%w 包装和常见声明误区。483 收藏 -
Go http.Server 的优雅关闭不是直接调用 Close,而是用 Shutdown 先停止监听、关闭空闲连接,再等待活动请求结束。本文给出带退出信号和超时上下文的最小实现,并说明 ErrServerClosed、超时以及 WebSocket 等长连接边界。483 收藏