Go教程技术文章
-
math/big 的 Int 运算通常不会像机器整数一样溢出,异常多出现在 Int64/Uint64 转换、big.Float 精度舍入或接收者复用。本文给出一套可检查的定位方法。477 收藏 -
用 Go json.Decoder 配合 Token、More 和 Decode 逐项处理大型 JSON 数组,说明不保存全量切片时的内存边界、数字精度和异常处理取舍。476 收藏 -
Go 的 gzip.Writer 可以通过 Reset 复用,但切换输出前必须先 Close 当前 GZIP 流。本文用批处理示例说明 Write、Close、Flush、Reset 的顺序、差异和容易忽略的边界。476 收藏 -
Go testing.T Setenv 会在测试结束后恢复环境变量,但修改过程影响整个进程,因此不能与 t.Parallel 或并行祖先组合使用。本文拆解冲突原因,并给出串行边界、显式配置和子进程隔离三种处理方式。475 收藏 -
Go test -cover 默认只统计当前测试目标包。本文用 coverprofile 和 -coverpkg 对照说明包路径选择、依赖包覆盖率与 CI 统计口径的关系。475 收藏 -
strings.Builder 的 Reset 会把内部缓冲区置为 nil,不保留容量;已返回的字符串仍可能延长旧缓冲区生命周期。本文用最小示例梳理复用、清空、Grow 和对象池的边界。475 收藏 -
Go 读取超过内置范围的大整数时,应按输入形态选择 math/big 的 SetString、fmt.Sscan、JSON 解码或 SetBytes,并在 String、Text、Bytes 和 int64 转换之间处理进制、符号与范围边界。474 收藏 -
围绕 Go tls.Config 的 SetSessionTicketKeys,说明服务端会话票据密钥的默认自动轮换、手动 key ring、多副本同步、旧 key 移除和回滚边界。474 收藏 -
CPU Profile 只能定位 CPU 采样热点,不能单独证明优化收益。本文用固定工作负载、重复 Benchmark、benchstat 与前后 Profile 对比建立验证链,避免单次数据、环境漂移和热点转移造成误判。474 收藏 -
用 bytes.Reader 从指定偏移量读取时,Seek 会移动当前位置,ReadAt 不会移动游标,切片则改变可见数据范围。本文用示例说明三种写法与越界处理。473 收藏 -
Go 的 Base32 无填充编码可通过 StdEncoding.WithPadding(base32.NoPadding) 创建。本文给出最小写法,并检查调用对象、解码规则、输出长度和流式关闭边界。473 收藏 -
Go gzip.Writer.Flush 会让流式数据更早可见,但高频调用会同步写出、增加同步标记并切碎压缩批次。本文给出消息边界、HTTP 缓冲和压测判断方法。472 收藏 -
围绕 Go maps 包比较嵌套值的相等性,说明 maps.Equal 与 maps.EqualFunc 的选择边界,并处理切片、嵌套 map、nil 与空集合语义。472 收藏 -
Go 使用 net/textproto.ReadMIMEHeader 报非法字段时,按缺少冒号、字段名 token、字段值字节和首行缩进四个边界定位,并用原始转义与十六进制日志修复上游输入。471 收藏 -
围绕 Go errors.As 讲清自定义错误类型、错误包装链、Unwrap 和目标指针的配合方式,帮助业务层按稳定字段分层处理错误而不是比较易变的文本。471 收藏