-
io.ReadAtLeast 读取的是至少 min 个字节,不等于一定只读取 min 个字节。本文说明如何控制缓冲区、解析可变长度消息的固定前缀,并处理 EOF、ErrUnexpectedEOF 和 ErrShortBuffer。
-
Go 原生 fuzzing 会把种子输入和失败输入保存为语料库。本文说明如何使用 F.Add 与 testdata/fuzz 管理语料,并用 go test 和 -run 复现指定输入。
-
Go 的 net/url 适合把地址拆成 URL 结构,再用 Values、JoinPath 和 String 重建。本文给出查询参数、路径转义、相对地址和请求 URI 的处理边界。
-
Go 1.27 的 strings.CutLast 可以围绕字符串中最后一次出现的分隔符返回 before、after 和 found。本文用一个小型反向拆分工具说明它的返回契约、未命中边界,并与 Cut、LastIndex、Split 做选择对比。
-
bytes.Buffer.Available 返回的是底层缓冲区尚未使用的容量,不是当前可读字节数。本文用固定状态表和最小示例区分 Len、Cap、Available、Bytes,并说明读取与 Reset 后的判断方式。
-
Go 的 TLSHandshakeTimeout 只负责 HTTPS 客户端 TLS 握手阶段的等待时间。本文用一个自定义 Transport 拆开连接、握手、响应头和响应体的超时边界,并说明如何根据错误现象选择排查方向。
-
Go jsonschema/v5 可以把 JSON Schema 编译成可复用的 *jsonschema.Schema。本文用一个小例子说明如何只编译一次、重复校验多份文档,并区分解析错误、编译错误和 ValidationError。
-
Go archive/tar 遇到长文件名时应选择 PAX 格式。本文用 Writer 与 Reader 说明 FormatPAX、Header.Name、Next 和 USTAR/GNU 的取舍。
-
io.OffsetWriter 把逻辑偏移映射到基准偏移之上,Seek 返回的是逻辑位置,Write 和 WriteAt 的坐标也不能混看。本文用分段写入场景拆解错位原因,并给出调用约定、边界处理与排查清单。
-
bufio.Writer.Available 返回内部缓冲区尚未使用的字节数。本文区分 Size、Buffered、Available 和 Flush,说明写入前后如何判断剩余空间、为什么大写入不等于必然失败,以及 AvailableBuffer 的使用边界。
-
本文围绕 Go testing.B 的 ReportMetric 说明如何让基准测试报告输出自定义指标,重点排查指标为空、被 ResetTimer 清除、单位覆盖、总量未除以 b.N,以及 RunParallel 并行计数不安全等问题。
-
Go 的 net.IP.IsLoopback 用于判断 IP 是否属于回环地址。本文从 net.ParseIP 开始,说明 127.0.0.0/8、::1、无效输入、未指定地址与私有地址的区别,并给出可复用的判断代码与测试边界。
-
bufio.Writer 的 Flush 失败后会保留错误状态。本文用一个可重试的小项目说明如何记录底层 Writer 已接收的字节数、保留原始数据,并用新的 Writer 安全重建未完成部分。
-
自定义 Go http.RoundTripper 添加请求头时,不要原地修改传入 Request。本文说明并发边界、Header 共享风险、Request.Clone 包装方式以及 nil Transport 等落地检查点。
-
Go archive/tar 可以读取稀疏归档并暴露 SparseHoles,但标准 Writer 当前不能直接把 sparse map 编码成 GNU/PAX 稀疏条目。本文说明正确的 Header 表达、普通 tar 写法和兼容方案。