Go语言技术文章
-
围绕 Go crypto/tls 的 tls.Config.NextProtos,说明 ALPN 协议清单、客户端与服务端配置、协商结果读取,以及在批处理连接中复用只读配置以减少重复分配的边界。259 收藏 -
database/sql 的 DB.Stats 同时提供连接池当前状态和累计关闭计数。本文说明 MaxLifetimeClosed 与 MaxIdleTimeClosed、MaxIdleClosed 的区别,并用两次采样差值定位连接寿命回收。259 收藏 -
Go iter.Seq2 用 yield func(K, V) bool 表达键值对迭代器,消费者可用 for range 同时接收键和值,break 时安全通知生产者停止。258 收藏 -
Go go:embed 可将目录资源装入 embed.FS。本文说明目录模式与隐藏文件规则、原始路径与 fs.Sub 子树读取,以及只读资源和敏感配置的边界。258 收藏 -
Go embed 读取模板时报路径不存在,通常不是文件没打进二进制,而是 //go:embed 模式、FS 内部路径和 ParseFS 参数不在同一层级。本文用几个最小结构说明如何定位并修正。258 收藏 -
使用 Go archive/tar 读取压缩归档时,当前条目读完的 io.EOF 与归档截断并不是一回事。本文解释 Header.Size、Reader.Read、Reader.Next 和 io.ErrUnexpectedEOF 的边界,并给出不吞错的读取写法。258 收藏 -
Go json/v2 的 MarshalWrite 负责把数据写入 io.Writer,json.Deterministic(true) 负责让同一输入产生稳定的 JSON 字节结果。本文用原创示例说明 map 键、结构体字段、自定义 Marshaler 和构建条件的边界。258 收藏 -
Go 交叉编译时把 CGO_ENABLED 改成 1 还不够。本文按目标三元组、CC/CXX、头文件与 sysroot、pkg-config 和链接阶段给出一套工具链排查顺序。258 收藏 -
Go errors.Is 适合判断被包装错误链中是否包含某个哨兵错误;需要提取原始具体类型和字段时,应改用 errors.As 或 errors.AsType。258 收藏 -
用 github.com/google/uuid 的 NewV7 生成带 Unix 毫秒时间前缀的 UUID v7,本文说明依赖安装、错误处理、排序边界、日志与发布检查,帮助 Go 服务把标识符生成逻辑放进稳定的生产边界。258 收藏 -
使用WithVariables声明外部变量,并在Code.Run中按顺序传值,结合过滤示例说明输入对象、变量类型、迭代错误和结果容器。258 收藏 -
Go pprof 的 heap profile 既能看当前仍占用的对象,也能看累计分配。本文从 inuse_space 与 inuse_objects 入手,结合 top、list、调用图和基线对比,定位长期保留对象并避开采样误判。257 收藏 -
Go fuzz 测试持续扩大输入时,问题往往来自探索时间、失败输入最小化和共享状态副作用叠加。本文按故障复盘顺序拆分 -fuzztime、-fuzzminimizetime、seed corpus 与 target 隔离,给出可控且可复现的排查方案。257 收藏 -
Go HKDF 派生长度不足应先区分 Reader 与标准库定长接口,再检查字节单位及累计输出上限。本文给出定长读取和错误处理示例,解释输入参数、重复创建 Reader 与迁移时的结果分配差异。257 收藏 -
Go 的 image/png 通过 CompressionLevel 提供默认、无压缩、最快和最佳压缩四种选择。本文用 Encoder 配置 PNG 编码级别,说明文件大小、编码开销和 BufferPool 之间的边界。257 收藏