Go教程技术文章
-
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 使用 crypto/ed25519 验证带上下文的签名时,要让 message、Options.Context 和 PublicKey 在两端保持一致。本文用规范化消息和 VerifyWithOptions 示例说明常见失败原因。416 收藏 -
Go 里想让多个 goroutine 同时停止,适合关闭一个只承载通知的 channel,而不是逐个发送停止值。本文讲清关闭者、接收者、select 和 sync.Once 的边界。416 收藏 -
Go 1.24 起 text/template 可直接 range iter.Seq2。本文用 slices.All 演示两个模板变量的绑定方式,并说明空序列、单变量语义、顺序和兼容处理。416 收藏 -
本文围绕 Badger v4 的 WriteBatch 批量写入,说明 Set 与 Flush 错误的区别、Cancel 的异常兜底作用、MaxPendingTxns 的设置方式,以及如何用稳定业务键和外部批次游标设计可恢复的导入边界。416 收藏 -
Go regexp.FindAllString 返回的是每次完整正则命中的文本。本文用一个日志片段提取小工具说明 n 参数、无匹配、空匹配,以及它和捕获组、字节下标 API 的区别。416 收藏 -
使用go-pretty ColumnConfig.WidthMax限制长文本列,通过完整示例说明列号定位、WrapText包装、整表宽度与常见配置误区。416 收藏 -
Go 1.23 的 slices.Chunk 返回的是原切片的连续子切片。本文用一个可运行例子说明修改分组结果为何会影响原切片,以及如何用 slices.Clone 建立独立副本。415 收藏 -
Go net/url 处理重复查询参数时,应从 url.Values 的 []string 读取并用 Add 追加;本文说明 Get、Set、Encode 与 RawQuery 的顺序边界。415 收藏 -
用一个可复用的 slog Handler 包装层统一过滤 password、token、email 等敏感字段,同时覆盖 WithAttrs、WithGroup 和嵌套 Group,业务日志调用保持不变。415 收藏 -
Go 1.22 引入的 sql.Null[T] 可以把 NULL 与自定义标量类型放在同一个扫描目标中。本文用 OrderState 和订单编码示例说明类型定义、Scan 调用、Valid 判断,以及 driver.Value 和旧版本兼容边界。415 收藏 -
用 Go httptest.ResponseRecorder 测试 Handler 时,区分 Code、Result 和 WriteHeader 的读取时机,准确断言最终状态码。415 收藏