Go教程技术文章
-
介绍 Go PNG EncoderBufferPool 的适配实现与批量编码接入,提供无池和有池基准示例,解释借还所有权、错误处理及分配下降与内存保留的区别。135 收藏 -
用 Go net.IPNet.Contains 判断地址是否落在 IPv4 或 IPv6 子网中,说明 ParseCIDR、地址族、掩码长度和 nil 边界,给出可复用的白名单判断写法。135 收藏 -
unique.Make 没有缓冲区参数。本文用 Go 逐行标签程序说明如何复用 Scanner 缓冲、转换稳定字符串并保存句柄,区分值去重与记录去重,同时解释输入限制、生命周期和性能判断边界。134 收藏 -
先处理 WalkDir 回调错误再访问目录条目,用完整只读统计工具区分根失败、子目录权限遗漏和主动排除,并解释 SkipDir、部分结果与退出状态。130 收藏 -
解释 OffsetWriter 的起点映射、Write 与 WriteAt 游标差异、Seek 支持范围,给出局部写入示例,并明确它不提供写入长度上限及底层关闭责任。129 收藏 -
Go 计算文件 SHA-512 摘要时,优先用 crypto/sha512.New 配合 io.Copy 流式读取,再将 64 字节结果编码成 128 位十六进制文本。本文给出完整实现、摘要比较方式和文件变化、空文件与算法选择的边界。128 收藏 -
Golang · Go教程 | 3天前 | 标准库 · Go教程 · Go io.Reader io.EOF compress/gzip Multistream gzip.Reader io.ByteReader
Go gzip.Reader 默认会把连续 gzip 成员当作一个逻辑数据流。本文说明怎样用 Multistream(false) 固定当前成员边界,利用 io.ByteReader 保留尾部数据,并区分当前成员 EOF、下一个 gzip 成员和普通尾部。127 收藏 -
解释 Go context.AfterFunc 取消清理与停止回调的区别,用 sync.Once 和完成信号处理空输入、并发收尾及错误合并,并说明适用限制。127 收藏 -
Go encoding/json/v2 默认拒绝重复成员名,可用 AllowDuplicateNames 明确严格或兼容策略。示例说明对象入口、空输入处理、局部结果隔离及旧数据导入边界。126 收藏 -
slices.Compact 会在原有切片上合并连续重复元素并返回缩短后的切片。本文说明如何接住返回值、判断底层缓冲是否复用,以及指针元素和容量边界的处理方式。125 收藏 -
本文围绕 slices.Compact 解释如何判断输入是否满足使用边界:识别连续重复、空切片、单元素和非连续重复,并说明返回长度、底层数组复用与尾部清零的影响。123 收藏 -
用 Go slices.Chunk 把大切片按固定大小分批,覆盖尾批次、空输入、非法批大小和子切片生命周期。123 收藏 -
解释 maps.Clone 不能直接读取文件,结合 Go 1.24 的 os.OpenRoot 与 Root.Open 在受限根目录内读取相对路径,再按需生成 map 快照并处理字节切片的浅克隆问题。120 收藏 -
Go 的 os.UserHomeDir 不是无条件返回一个目录:Unix 通常读取 HOME,Windows 读取 USERPROFILE,期望变量缺失时可能返回平台默认值,也可能返回非 nil error。本文用 CI 场景说明如何复现、处理和测试这个边界。118 收藏 -
用 Go 1.24 的 runtime.AddCleanup 为小型资源工具增加 GC 兜底:显式 Close 负责主路径,幂等状态避免重复释放,回调参数和 KeepAlive 处理对象可达性边界。117 收藏