-
bytes.Reader.Size 返回底层字节切片的原始长度,普通 Read 推进后它不会变化;真正表示当前未读数据的是 Len。本文用分段读取示例说明两个指标的区别,并给出进度计算、Reset 与 ReadAt 的边界。
-
Go math/big.Int.BitLen 返回绝对值的位长度,最少无符号字节数可按 (BitLen()+7)/8 估算。本文区分零值、负数、Bytes 变长编码与 FillBytes 固定宽度编码。
-
bytes.NewBuffer 会把传入的 []byte 作为初始缓冲区内容使用,不会替调用方自动复制。本文说明原切片修改为何会影响后续读取,以及如何用 bytes.Clone 或显式复制隔离数据。
-
Go io.ReadAtLeast 会根据已读字节数、min 和缓冲区长度返回不同结果。本文从固定长度读取故障出发,拆解短读、EOF、ErrUnexpectedEOF 与 ErrShortBuffer 的判断方式,并给出可复用的修复和防复发写法。
-
Go 中 *MyError(nil) 放进 error 接口后为何仍不等于 nil?本文用动态类型、动态值和可复制的排查代码说明原因,并给出正确返回方式。
-
Go database/sql 的 Conn.PingContext 可以检查一条已获取的专用连接是否仍然可用。本文说明 DB.Conn、超时 Context、PingContext 返回值和 Conn.Close 的正确配合,并区分全局连接池检查与单条会话检查。
-
Go netip.AddrFrom4 接收 [4]byte 并构造原生 IPv4 地址值。本文说明如何读取 String、Is4、As4,怎样处理 []byte 和文本输入,以及 IPv4-mapped IPv6、0.0.0.0 与零 Addr 的边界。
-
Go HTTP 客户端拿到响应后如果没有关闭 Response.Body,连接可能无法按预期复用,连续请求时会出现等待、变慢甚至连接资源耗尽。本文按请求体生命周期、连接复用和并发封装给出排查与修复方法。
-
Go httptrace.ClientTrace 可以在 GotConn 回调中记录连接是否复用。本文说明 Reused、WasIdle、IdleTime 的区别,以及同一个 http.Client、响应体关闭和 HTTP/2 场景下的排查边界。
-
Go http.Request.GetBody 不是当前请求体的别名,而是为客户端重定向或手动重试重新生成请求体的工厂。本文说明 NewRequest 何时自动填充它,以及自定义 io.Reader 如何保留可重放能力。
-
Go runtime.LockOSThread 只适用于依赖线程局部状态的操作系统服务或非 Go 库调用。本文说明判断条件、成对解锁、专用锁定 goroutine 以及不能恢复线程状态时的退出边界。
-
Go os.Geteuid 返回当前进程的有效用户 ID。本文用一个跨平台示例区分有效 UID、真实 UID 与有效组 ID,说明 Unix 与 Windows 的返回差异,并解释为什么它不能单独充当权限授权依据。
-
Go token.File.Offset 用于把文件内的 token.Pos 转回从 0 开始的字节偏移。本文从 FileSet、File.Pos 与 File.Offset 的关系讲起,结合 AST 位置、NoPos、越界位置和 UTF-8 字节列,给出适合生产诊断与源码工具的边界写法。
-
Go 的 go/format.Node 可以把 AST 节点按 canonical gofmt 风格写入 io.Writer。本文从 parser.ParseFile 开始,说明 FileSet、节点范围、错误处理,以及 Node 与 Source 的取舍。
-
Go ast.FileExports 会原地裁剪 ast.File,只保留导出的顶层声明,并继续清理导出类型中的非导出字段和方法。本文从源码解析开始,给出完整的裁剪与格式化示例,再说明函数体、注释、返回值和 FilterFile 的边界。