Go语言技术文章
-
Go select 在多个通信操作同时就绪时不会按 case 顺序提供业务优先级,而是选择一个可执行通信。本文用高价值、普通和后台三类通道说明非阻塞探测、处理预算、关闭边界与防饥饿设计。417 收藏 -
解释 Go generate 环境变量替换与参数边界的关系,说明带空格值、多个独立参数、字面美元符号和空变量的可靠写法。417 收藏 -
通过固定工作量对比 GOMAXPROCS,说明 CPU 配额、阻塞任务和运行时默认策略如何影响 Go 并发吞吐,并给出上线复核清单。417 收藏 -
讲清 Go crypto/ecdh.NewPrivateKey 导入现有私钥的正确入口,区分原始标量、PEM 与 PKCS#8,并给出曲线长度、转换和存储边界。417 收藏 -
通过 Batch[T] 的 Filter、Clone 和 Map[U] 示例,说明泛型方法怎样直接复用接收者已有的 T、自动继承原约束,并判断何时才需要声明新的方法类型参数 U。417 收藏 -
把已有的 Go 推送式回调封装为 iter.Seq[T],让调用方用 range 消费,并正确处理提前停止、资源清理和单次迭代边界。417 收藏 -
Golang · Go教程 | 1个月前 | 加密 · Go教程 · crypto/hpke Go HPKE associated data aad Sender.Seal Recipient.Open
Go 的 crypto/hpke 用 aad 把租户、版本和消息序号等公开字段绑定到密文认证范围。本文区分 info 与 aad,给出 Sender.Seal/Recipient.Open 的实现方式,并说明上下文计数器、消息顺序和重放处理的边界。417 收藏 -
Go ast.FilterFile 不只是按名称裁剪顶层声明,它还会无条件移除导入声明。本文用一份带导入、类型和函数的 AST 拆开过滤边界,说明返回值、字段过滤和保留原始导入的处理选择。417 收藏 -
Golang · Go问答 | 1个月前 | Go教程 · Go问答 · 文件系统 · Go afero CopyOnWriteFs CopyOnWriteFs 写入 base layer overlay 文件系统
Go afero CopyOnWriteFs 读取基础层成功但原文件不变,是因为写操作会把 base 文件复制到 layer,再只修改覆盖副本。本文从源码关系拆解读写边界,并说明预览隔离、显式同步和直接使用 OsFs 的选择。417 收藏 -
Go 1.23 后无引用 ticker 可被 GC 回收,但后台 goroutine 仍持有 ticker 或没有退出条件时,任务依旧会长期存活。本文用生命周期、Stop 和退出信号拆开排查。417 收藏 -
介绍 Go 1.22+ net/http ServeMux 的路径参数提取方式,说明 PathValue、参数校验以及 400、404、405 状态码的边界,并给出适配外部路由的 handler 契约。417 收藏 -
Golang · Go问答 | 4星期前 | 日志 · 标准库 · go · 故障排查 · Go 结构化日志 ReplaceAttr log/slog WithGroup WithAttrs slog.Handler
Go log/slog 中字段消失,通常不是 Logger.With 没有传进去,而是 ReplaceAttr 返回了零值 Attr,或自定义 Handler 在 WithAttrs、WithGroup 中丢掉了状态。本文按调用链定位原因,并给出只过滤明确键名的修复写法。417 收藏 -
Go 的 path.Match 适合匹配使用正斜杠分隔的资源名。本文用最小示例说明 *、?、字符类、转义、完整匹配和 ErrBadPattern 的边界,并给出生产配置检查方法。417 收藏 -
Go 的 token.File.String 会输出文件名与 Pos 范围,而不是行列号。本文用 FileSet、Base、End、Pos 和 Position 的关系,拆清格式化文件对象与定位源码位置的使用边界。417 收藏 -
Go 1.27 的 encoding/json/v2 提供 UnmarshalRead,适合从 HTTP 请求体、文件或其他 io.Reader 解码一个完整 JSON 值。本文从请求体尾随数据的故障现场出发,说明 EOF、单值输入、大小限制、错误分类,以及多值流为何应该改用 UnmarshalDecode。417 收藏