Go语言技术文章
-
Go flag.FlagSet 参数不生效时,应核对注册集合、Parse 入参和选项位置。本文给出独立解析函数,说明位置参数、布尔赋值、子命令与错误处理的常见问题,并提供排查速查表。404 收藏 -
Golang · Go教程 | 2天前 | 并发 · 标准库 · 定时任务 · 性能优化 · Go教程 · 批处理 计时器 Go 内存分配 time.Ticker Ticker.Reset Ticker.Stop
Go time.Ticker 的关键不在于盲目调用 Stop,而在于明确 ticker 的生命周期:用 context.Done 结束周期任务,用 Stop 停止后续 tick,用 Reset 复用同一任务内的节拍,避免批处理循环反复创建 ticker 和失去资源归属。404 收藏 -
本文把 os.OpenRoot 的目录边界、manifest 的有序文件名切片和 slices.BinarySearch 的命中判断组合起来,演示如何在受限根目录内定位并读取文件,同时处理未命中、越界路径和资源释放。403 收藏 -
sync.Map.CompareAndSwap 返回 false 不会指出改写者,也不提供失败时的旧值。通过可比较结构体携带版本、写入者与操作标识,并区分后续 Load 观察、键删除及类型差异,避免错误归因。403 收藏 -
Go database/sql 的 Null[T] 用 Valid 表示当前值是否为 NULL,V 只在 Valid=true 时作为业务值读取。本文按现象、证据和修复动作说明 Scan、Value、有效零值与类型转换错误的边界。403 收藏 -
用 fs.FileInfo 包装类型实现 tar.FileInfoNames 的 Uname 与 Gname,让 FileInfoHeader 写入固定的归档用户名和组名,并说明 UID、GID、路径和内容写入的边界。402 收藏 -
Go crypto/aes 的临时分配通常来自重复初始化、Seal/Open 每次从 nil 切片扩容以及热路径中的字符串转换。本文用 AES-GCM 说明如何复用 AEAD、目标缓冲区和 nonce 存储,并划清别名与 nonce 安全边界。402 收藏 -
Golang · Go问答 | 5天前 | 标准库 · Go问答 · 版本升级 · Go Base strconv.ParseInt Go升级 bitSize NumError ErrRange ErrSyntax ParseInt行为
Go 升级后 strconv.ParseInt 结果看似变化,通常应先比较输入字符串、base、bitSize 和 error 处理。本文用一套可复现的排查入口拆开前缀推断、位宽范围与 NumError,帮助判断差异来自调用契约还是升级本身。401 收藏 -
io.LimitReader 达到上限后也会返回 EOF,这个 EOF 不能单独证明源数据自然结束。本文用 max+1 探测窗口区分恰好达到上限、超限截断和底层读取错误,并给出可复用的 Go 实现与测试边界。401 收藏 -
reflect.Value.SetString 只有在目标值有效、Kind 为 String 且 CanSet 为 true 时才适合调用。本文说明指针取 Elem、结构体字段和未导出字段的边界。400 收藏 -
Go 拼接带有路径参数的 URL 时,直接把原始字符串放进 Path 容易让斜杠、空格或问号改变路径结构。本文说明 net/url.PathEscape 的正确边界,并对比 QueryEscape、url.URL.Path、RawPath 和重复转义问题。400 收藏 -
Go strings.Cut 不只是把字符串分成两段,还能通过 found 判断分隔符是否存在。本文用配置项解析示例说明如何保留原始输入、区分缺失分隔符与空字段,并用 %w 保留底层错误原因。400 收藏 -
Go archive/zip 的 File.Open 返回解压后的条目内容并负责校验,File.OpenRaw 则返回 ZIP 内保存的原始压缩字节。本文比较两者的资源、错误和用途边界,演示如何安全导出原始数据。399 收藏 -
Go 的可选时间字段不要只靠一个特殊日期来猜。本文对比 time.Time 零值、*time.Time 的 nil 语义和显式 Valid 包装,说明它们在判断、JSON 编解码与持久化边界上的适用场景。399 收藏 -
url.ParseQuery 只负责把 URL 编码查询串解析成内存中的 url.Values,不会打开文件、连接或响应体。本文用错误返回值、资源拥有者和运行时指标拆分排查路径,定位真正未释放的请求体、响应体、文件、连接或 goroutine。399 收藏