Go教程技术文章
-
介绍 Go 1.22+ net/http ServeMux 的路径参数提取方式,说明 PathValue、参数校验以及 400、404、405 状态码的边界,并给出适配外部路由的 handler 契约。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 收藏 -
Go 1.26 的 go fix 支持 //go:fix inline,可把旧函数、常量或类型别名迁移到新 API。本文从薄包装、diff 预览、参数副作用、defer 与测试边界说明如何准备规则。417 收藏 -
Go 的 math/bits.Rem64 用 hi、lo 两个 uint64 表示双字无符号被除数并返回余数。本文说明参数含义、零除数边界,以及 Rem64 与 Div64 在商溢出处理上的区别。417 收藏 -
Go log/slog.Logger 减少临时分配的关键不是盲目复用对象,而是让日志调用尽早走 Attr 路径:优先使用 LogAttrs 和类型化 Attr,把稳定上下文交给 With 预处理,只对昂贵参数做 Enabled 预判断。本文结合调用路径、属性复用和适用边界说明具体写法。417 收藏 -
本文围绕 Badger v4 的 WriteBatch 批量写入,说明 Set 与 Flush 错误的区别、Cancel 的异常兜底作用、MaxPendingTxns 的设置方式,以及如何用稳定业务键和外部批次游标设计可恢复的导入边界。416 收藏 -
Go regexp.FindAllString 返回的是每次完整正则命中的文本。本文用一个日志片段提取小工具说明 n 参数、无匹配、空匹配,以及它和捕获组、字节下标 API 的区别。416 收藏 -
使用go-pretty ColumnConfig.WidthMax限制长文本列,通过完整示例说明列号定位、WrapText包装、整表宽度与常见配置误区。416 收藏 -
用 Go httptest.ResponseRecorder 测试 Handler 时,区分 Code、Result 和 WriteHeader 的读取时机,准确断言最终状态码。415 收藏 -
使用 Go 标准库 net/mail 解析带显示名的单个邮箱、地址列表和 RFC 2047 编码显示名,区分 Name 与 Address,并说明语法解析和投递校验的边界。415 收藏 -
Go netip.Addr.AppendBinary 适合把 IPv4 或 IPv6 地址追加到已有字节切片。本文说明返回切片、IPv4/IPv6 长度、零值错误和协议字段边界。415 收藏 -
用一个小型 Go 工具说明 bytes.CutSuffix 如何处理固定后缀、如何判断 found,以及空后缀、未匹配和底层切片共享的边界。415 收藏 -
介绍 Go Gonum 如何用 simple 构造带权无向图,再调用 path.Prim 生成最小生成树,读取总权重与树边,并说明非连通图和 Kruskal 的使用边界。415 收藏