-
bytes.Reader 读取内存字节时会维护当前位置。本文用 SeekStart、SeekCurrent 和 SeekEnd 解释如何跳转偏移、重放同一份数据,并区分 Len、EOF 与越界错误。
-
bytes.Buffer.Bytes 返回的是与缓冲区内容共享底层数组的切片。本文按数据生命周期说明什么时候可以直接读取,什么时候要用 append 复制成独立副本,并排查后续 Write、Reset、Truncate 和并发访问造成的覆盖误判。
-
bufio.Writer 的 Flush 失败后会保留错误状态。本文用一个可重试的小项目说明如何记录底层 Writer 已接收的字节数、保留原始数据,并用新的 Writer 安全重建未完成部分。
-
读取带长度前缀的二进制帧时,bufio.Reader.Read 可能短读,不能把一次 Read 当成完整帧。本文用 io.ReadFull 读取帧头和 payload,按 binary.BigEndian 解析长度,并在分配内存前做上限校验。
-
Go 读取大文件的固定偏移数据时,可以用 os.File.ReadAt 直接写入目标缓冲区,不必把整个文件载入内存。本文说明 offset、短读、EOF、范围检查以及可复用的固定窗口读取写法。
-
Go 的 net.IP.IsLoopback 用于判断 IP 是否属于回环地址。本文从 net.ParseIP 开始,说明 127.0.0.0/8、::1、无效输入、未指定地址与私有地址的区别,并给出可复用的判断代码与测试边界。
-
Go crypto/cipher.AEAD 的 Seal 支持用 plaintext[:0] 复用明文存储,但是否真的减少分配取决于剩余容量和切片别名边界。本文说明如何按 Overhead 预留容量,并避开 additionalData 与输入输出的非法重叠。
-
使用 encoding/base64.NewDecoder 把 Base64 文件接入 io.Copy,边读取边解码并写入目标文件,本文同时说明文件句柄、尾部截断、非法字符和不同编码表的处理边界。
-
Go debug/dwarf.Reader.Seek 可以用 Entry.Offset 把 Reader 放回 DWARF info 区段中的指定条目,再调用 Next 继续先序遍历。本文用可复用的偏移索引示例说明如何处理 Children、零 Tag 结束标记和 SkipChildren,并用示例指标比较重复重扫与偏移跳转的成本。
-
讲清 Go debug/dwarf.LineReader.Files 的当前位置语义、文件索引 0、动态文件表,以及 AttrDeclFile 与 LineEntry.File 的安全解析方法。
-
Go 的 net.Resolver.LookupTXT 返回 []string,但每个元素代表一条 DNS TXT 记录;同一条记录内部的多个字符串片段已经由 Go 拼成一个字符串。本文用一个小工具讲清记录边界、拼接时机、超时和错误处理。
-
LookupNetIP 可以在查询阶段用 ip4 或 ip6 限定地址族,也可以先查 ip 再用 netip.Addr.Is4 或 Is6 二次筛选。本文用一个双栈连接场景说明两种写法的边界。
-
Go net.Resolver.LookupAddr 接受 IP 地址并返回一个或多个反向 DNS 主机名。本文用带超时的上下文处理 PTR 查询,说明如何保留多结果、区分空切片与错误,并排查纯 Go 与 cgo resolver 的环境差异。
-
Go 的 flate.NewReader 返回 io.ReadCloser,读取结束后要关闭解压层;如果底层是文件、连接等可关闭资源,还要由拥有者单独关闭。本文说明两层资源的责任边界、defer 顺序、循环处理和 Reset 复用场景。
-
解释 Go compress/flate.Writer 在 Close 后再次 Write 返回 flate: closed writer 的原因,区分底层 I/O 错误,并给出 Reset 与重新创建 Writer 的选择。