Go语言技术文章
-
Go 读取超过内置范围的大整数时,应按输入形态选择 math/big 的 SetString、fmt.Sscan、JSON 解码或 SetBytes,并在 String、Text、Bytes 和 int64 转换之间处理进制、符号与范围边界。474 收藏 -
Go json.Decoder 将 JSON 解码到 interface{} 时,数字默认会变成 float64。本文用 UseNumber 保留 json.Number,再按业务需要转换为 int64、float64 或字符串,并比较结构体、动态 map 与 RawMessage 的适用边界。474 收藏 -
围绕 Go tls.Config 的 SetSessionTicketKeys,说明服务端会话票据密钥的默认自动轮换、手动 key ring、多副本同步、旧 key 移除和回滚边界。474 收藏 -
解释 Go mime/multipart 的 NextPart 为什么隐藏 Content-Transfer-Encoding 并在读取时自动解码 quoted-printable,给出 NextRawPart 保留原始字节的写法与选择边界。474 收藏 -
CPU Profile 只能定位 CPU 采样热点,不能单独证明优化收益。本文用固定工作负载、重复 Benchmark、benchstat 与前后 Profile 对比建立验证链,避免单次数据、环境漂移和热点转移造成误判。474 收藏 -
解释Go Colly异步请求为何在主程序退出前尚未完成,给出Wait正确位置、本地页面示例和错误记录方法,并说明回调及后台写入的等待边界。474 收藏 -
通过导出配额示例说明 Go 错误包装、哨兵分类与类型提取,给出可判断错误链的完整代码,并解释 As 目标指针、包装契约与底层细节的公开边界。474 收藏 -
bytes.Buffer 的可用空间要看 Available,而不是只看 Cap。本文结合 Len、Cap、Available 和 Grow,说明如何估算当前缓冲区的剩余容量,以及读取、复用和扩容时的实际边界。474 收藏 -
Go iter.Seq2 的两个 yield 参数需要明确业务含义,回调 bool 则表示是否继续。通过原切片索引与任务值的完整示例,解释过滤编号、提前停止、Go 1.23 要求、回调兼容写法及闭包所有权边界。474 收藏 -
Go Cookie 不被浏览器保存,通常不是 Cookie 结构体失效,而是响应头没有及时写出,或 Domain、Path、Secure、SameSite、MaxAge 等属性不符合当前请求环境。本文用最小 net/http 示例拆分接收、存储和发送三层排查。474 收藏 -
Go slog.Logger.With 会返回带属性的新 Logger,不会改写原 Logger。本文用并发请求和测试场景说明共享字段污染的成因、检查方法、隔离写法与验收边界。473 收藏 -
解释 encoding/csv.Reader.ReuseRecord 的切片复用语义,演示批量读取时如何降低分配,以及需要长期保存记录时如何避免数据被下一次 Read 覆盖。473 收藏 -
SetMemoryLimit 和 GOMEMLIMIT 都是在约束 Go 运行时内存预算,但它们不是硬性进程上限。本文用一个可复测的小程序说明 GC 频率、HeapReleased 与外部内存的边界,并给出压测和容器部署中的核对方法。473 收藏 -
解释 Go modernize/newexpr 为何暂不把显式 uint32、int64 泛型辅助函数改成 new(expr),并给出默认类型、显式转换与批量审查边界。473 收藏 -
context.Err 和 context.Cause 不是同一个答案。本文用父子 Context、首个取消者和原因转发三个边界,说明为什么只能得到 context.Canceled,以及日志该如何记录。473 收藏