Go教程技术文章
-
Go 的 multipart.Writer 默认使用随机 boundary,直接把请求体拿去做接口签名时可能导致同样字段生成不同字节。本文用 SetBoundary 固定边界,说明字段顺序、Close、Content-Type 和原始 body 字节的签名边界,并给出排查清单。471 收藏 -
Golang · Go教程 | 1星期前 | 性能优化 · 并发编程 · 同步 · Go教程 · Go add sync/atomic CompareAndSwap 并发计数器 atomic.Int64 Load
Go atomic.Int64 适合维护并发请求数、在途任务数等单值状态。本文从普通自增的竞态出发,说明 Add、Load、Store 和 CompareAndSwap 的使用边界,以及零值、复制和复合条件判断的注意事项。471 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · golang · 测试 · go · 迭代器 · 字符串处理 · Go 迭代器 换行 range over function strings.Lines
Go 1.24 引入的 strings.Lines 返回一次性迭代器,逐行保留换行符;本文用可运行示例拆开末尾换行、空输入、最后一行和重复消费等边界,并给出测试写法。470 收藏 -
Go 1.22 引入的 Request.PathValue 不是从 URL.Path 里随便切字符串,而是读取 ServeMux 匹配结果中的命名通配符。本文用最小路由示例核对普通通配符、{name...}、未匹配请求、URL 解码和 SetPathValue 的边界。470 收藏 -
用 encoding/xml.Decoder 按 Token 扫描大型 XML,只在命中目标元素时 DecodeElement,并用 Skip 跳过无关大节点,降低整体加载带来的内存峰值。470 收藏 -
Go 的 math/big.Float 使用二进制尾数精度,不是十进制小数位。本文用原创示例解释 SetPrec、舍入模式、运算接收者和 Text 输出之间的区别。470 收藏 -
使用 Go io.CopyN 写归档文件时,不能只看目标文件是否存在;本文用 written、err、临时文件和 Stat 组合确认目标长度,避免把部分归档误当成功。470 收藏 -
bufio.Reader.ReadString 读不到分隔符时,可能返回已经读到的字符串和 io.EOF。本文用返回值边界、最后一段处理和读取循环说明如何避免丢数据、误报错误与死循环。470 收藏 -
对比 iter.Seq2 键值流的三种错误契约,给出可复用的泛型收集器,并说明 maps.Collect、终态错误与 Pull2 的边界。470 收藏 -
Go 1.27 扩展了泛型函数的类型推断场景。本文用函数类型赋值、类型转换和 channel send 三个边界,说明何时可以省略类型参数,以及旧代码迁移时如何核对。469 收藏 -
Go 项目可以用 go build 的 -ldflags=-X 在构建时写入版本号和提交号,再配合 -trimpath 减少本机路径差异。本文给出变量定义、脚本参数、可复现边界和发布前检查方法。469 收藏 -
讲清 Go time.Timer 复用时 Stop 返回值、旧语义排空 C 通道和 Go 1.23 新计时器语义的差异,并给出单一所有者的安全模板。469 收藏 -
Go 1.23 为 reflect.Value 增加了 Seq2,可把 map 统一为 key/value 序列,也能遍历数组、切片、字符串和双值迭代函数。本文从一次遗漏 map 值的故障出发,说明 CanSeq2 判断、各类型双值语义和提前停止边界。469 收藏 -
Go slices.SortFunc 的多字段排序关键是让比较器按优先级、时间和名称逐层比较,并在每层不相等时立即返回。本文给出最小写法、降序字段处理、相等元素稳定性和比较器检查方法。469 收藏 -
Go 的 t.Run 会形成带斜杠的测试层级,使用 go test -run 配合顶层测试名和子测试名即可只执行指定场景;本文还说明未锚定正则、精确匹配和常见误区。469 收藏