Go问答技术文章
-
filepath.Glob 匹配不到文件时,问题通常不在通配符本身,而在相对路径基准、目录层级、操作系统分隔符或实际没有匹配项。本文用一个可复用的最小示例区分根目录缺失、ErrBadPattern 和空结果,并说明 Glob 的适用边界。255 收藏 -
Go sql.DB 的 SetConnMaxLifetime 设置的是连接最多可被复用的时长,过期连接可能在下一次复用前惰性关闭,并不承诺到点立即断开。本文用 DB.Stats 区分连接年龄、空闲时间和并发上限三个边界。254 收藏 -
Go copy 允许源和目标切片重叠,但不会扩展目标长度或执行深拷贝。通过队列右移、原地删除和容量对照示例,解释复制数量、清尾、长度归属及共享数据边界。254 收藏 -
Go container/heap 中已有元素修改优先级后,应先更新对象字段,再用对象当前 index 调用 heap.Fix;本文解释 Swap 的索引维护、Fix 与 Remove/Push/Init 的边界,以及如何固定这些一致性风险。254 收藏 -
Golang · Go问答 | 6天前 | 标准库 · Go问答 · Go io.Reader image.Decode image/png DecodeConfig image/jpeg image/gif
Go image.Decode 不生效时,先区分 image.ErrFormat、EOF 和 reader 已被消耗三类原因。本文说明 PNG、JPEG、GIF 解码器的空白导入注册方式,演示 DecodeConfig 预检、重新创建 reader、限制图片尺寸以及通过 format 和 Bounds 确认结果。254 收藏 -
Go 的 regexp.Regexp.LiteralPrefix 可以提取每个匹配必经的固定前缀。本文区分非锚定与 ^ 锚定查询,给出 Contains、HasPrefix 与 MatchString 的安全组合,并说明空前缀、完整字面量和性能收益边界。254 收藏 -
修改 Go AST 后,旧的 types.Info 不会自动重算。本文结合 AST 节点、FileSet、Info 和 Checker 的关系,说明如何判断旧结果失效,并用新的检查上下文重新获得类型信息。254 收藏 -
Go写文件时如何接住Close错误,与写入错误共同返回,并区分缓冲Flush、文件Sync和资源关闭的不同职责。254 收藏 -
Go 文件没有参与编译时,不要先反复清理缓存。用 go env 和 go list -json 查看当前模块、平台、构建标签以及 GoFiles、IgnoredGoFiles,再按文件名后缀、//go:build 和 -tags 修正文件选择条件。253 收藏 -
Go 的 IPv4-mapped IPv6 地址看起来像 IPv6,但它包裹的是 IPv4。本文用 netip.Addr 说明白名单直接比较为什么失效,并给出用 Unmap 统一规范化、保留真正 IPv6 语义的实现方式。253 收藏 -
Golang · Go问答 | 2星期前 | 字符串 · go · unicode · utf-8 · Go问答 · Go 字符串长度 UTF-8 unicode/utf8 RuneCountInString
Go 的 len(string) 统计字节,而 utf8.RuneCountInString 统计解码后的 rune 数量,所以中文和 emoji 常常出现两个结果。本文进一步说明非法 UTF-8 与用户感知字符的边界。253 收藏 -
Go 进程内存持续增长而 heap profile 没有明显对象时,不要直接认定是 heap 泄漏。本文区分 RSS、HeapAlloc、堆保留空间、goroutine 栈和分配 churn,并用 heap、allocs、runtime.MemStats 与 runtime/metrics 组合定位增长层。253 收藏 -
Go strings.Count 只统计不重叠匹配。本文用按字节起点推进的实现统计重叠子串,并说明空子串、UTF-8 与输入规模边界。253 收藏 -
区分 Go Selection.Indirect 的选择路径含义和方法声明接收者,以嵌入指针字段说明误判,并给出读取原始方法签名的辅助函数及历史行为注意事项。253 收藏 -
用 Go context.WithTimeout 派生多个子任务时,理解父子取消传播、兄弟隔离、超时判断和 CancelFunc 资源释放。253 收藏