Go教程技术文章
-
用 Go testing.F 为字符串解析器添加少量边界种子,区分预期的解析错误与真正的不变量破坏,并让 fuzz 失败输入沉淀到 testdata/fuzz/FuzzParseRecord,成为可重复执行的回归样本。313 收藏 -
Go io.CopyBuffer 的缓冲区不是越大越快。本文从 WriterTo/ReaderFrom 复制路径、32 KiB 基线、并发内存预算和错误边界出发,说明如何选择 32、64 或 128 KiB,并给出可复用的文件复制示例。313 收藏 -
使用 Go net/url 生成签名查询串时,统一 Values.Encode、参数排序、重复键策略和 RawQuery,避免空格、加号与二次编码造成验签不一致。313 收藏 -
Go math/big.Float 应在写入数值前调用 SetPrec 设置二进制精度,再用字符串或有理数输入并让目标值承接运算;文中同时说明 Prec、Mode、Acc 的判断方法。313 收藏 -
用 Go Excelize 为工单状态列添加下拉数据校验,拆分目标区域与候选来源,给出错误处理完整示例,并说明内嵌列表、单元格引用和输入提示的适用边界。313 收藏 -
本文说明如何用 testing.T.Setenv 临时修改测试环境变量、自动恢复原值,并解释它为什么不能与 t.Parallel 或并行祖先同时使用。313 收藏 -
Go httptrace.GotConnInfo 的 Reused、WasIdle 和 IdleTime 分别回答不同问题。本文用 ClientTrace 观察 HTTP 客户端连接复用,说明响应体关闭、Transport 配置、重定向和 HTTP/2 场景下的判断边界。313 收藏 -
bytes.Buffer.Reset 会清空未读内容、把偏移恢复为零,同时保留底层存储供后续写入。本文用消息组装示例说明 Len、Cap、Reset 与 Truncate(0) 的区别,以及复用时的所有权边界。313 收藏 -
Go 的 math/big.Rat 用任意精度分子和分母保存有理数,适合金额比例、配额和分数计算。本文说明如何创建、解析、运算和格式化 Rat,并划清与 float64 及浮点输出的边界。312 收藏 -
用 Go 的 http.ServeContent 处理 Range 请求,关键是传入支持 Seek 的 io.ReadSeeker,并通过 206、Content-Range、Content-Length 和 416 判断区间是否读取正确。312 收藏 -
围绕 Go os/exec 的 StdoutPipe 说明 Start、读取、Wait 的正确顺序,并区分输出读取错误、退出错误与 stderr 诊断信息。312 收藏 -
Go gzip.Reader 默认会连续解压拼接成员。本文用 Multistream(false)、bufio.Reader 和 Reset 逐段取得每个成员的 Header 与正文,并加入单成员大小限制、错误处理和安全落盘边界。312 收藏 -
Go embed.FS 提供内嵌文件树,但文件系统根和 HTTP 公开前缀是两层路径。本文用 fs.Sub、http.FS、http.FileServer 与 StripPrefix,把 web/index.html 稳定挂到 /assets/index.html,并说明尾斜杠、目录索引和暴露边界。312 收藏 -
Go GJSON 处理 JSON 数组时,可以用 #.字段提取所有元素的同名字段,用条件查询后再投影,或用多路径一次构造只包含指定键的对象。本文给出当前写法、缺失字段处理和旧查询语法迁移边界。312 收藏 -
Go 的 json.Decoder 面向 JSON 输入流,单次 Decode 成功不代表请求体已经结束。本文用第二次 Decode 严格要求 io.EOF,拒绝第二个 JSON 值、非法尾部字符和空请求体,并说明它与 DisallowUnknownFields、请求体大小限制的区别。312 收藏