Go问答技术文章
-
Go debug/dwarf 的 LineReader 可以用 Tell 保存当前行表位置,再用同一个 LineReader 调用 Seek 恢复。本文用一个紧凑示例说明保存时机、继续读取方式,以及 LineReaderPos 不能跨行表复用的边界。371 收藏 -
从 goroutine 数量趋势、pprof 堆栈和 goroutineleak profile 入手,区分 channel 阻塞、I/O 等待与活跃循环三类增长,并给出可回滚的修正步骤。370 收藏 -
Go 调用 os.File.Sync 后数据仍不可见,通常不是 Sync 失效,而是 bufio 缓冲尚未 Flush、Write 错误未处理、读取端沿用旧偏移,或把稳定存储误当成通知机制。本文按边界拆开排查并给出安全写法。370 收藏 -
Go url.URL 的 Fragment 面向解码后的语义,RawFragment 只是可选的原始编码提示。本文说明如何用 EscapedFragment 和 String 保留片段中的百分号编码,分析直接拼接与直接改写 RawFragment 的边界,并给出解析、读取、修改和输出检查清单。370 收藏 -
Go regexp.Regexp 可以用 MarshalText 导出正则文本,再用 UnmarshalText 恢复为可匹配对象。本文用配置字符串说明 JSON 保存、非法模式处理,以及 Longest 和 POSIX 状态不会随文本自动恢复的边界。370 收藏 -
Go GC 延迟抖动需要把分配速率、辅助标记 CPU、暂停与调度等待放在同一窗口比较。本文给出支持列表采集示例,说明累计直方图差分、缺失指标和升级对照的判断边界。370 收藏 -
Go database/sql 的 ColumnType.DatabaseTypeName 返回空字符串时,如何区分驱动能力缺失与查询错误,并用显式映射、ScanType 和 unknown 设计稳定的跨驱动回退。369 收藏 -
Go goroutine 捕获循环变量可通过显式形参固定每轮任务值。本文区分 Go 1.22 后的声明式循环与外部变量复用,用 WaitGroup 给出完整示例,并解释指针、切片和 map 的共享边界,避免把参数副本误当深拷贝。369 收藏 -
os.Stat 成功不保证后续 Open 成功。文章说明路径竞态、权限差异与文件句柄的区别,给出直接打开、限量读取和错误分类示例,并划清排他创建与可信根目录访问的边界。369 收藏 -
go-shp 写入 Shapefile 时,Write 完成并不等于文件完整。本文说明 Close 如何收尾 SHP、SHX、DBF 头部,并给出字段、几何、属性与交付边界的写法。369 收藏 -
Go io/fs.Sub 创建子文件系统后,../ 父级路径为什么会失败?本文从 fs.ValidPath 和路径映射解释原因,并给出同时访问子目录与根级资源时保留原始 FS 的设计方式。369 收藏 -
Go 解析无时区字符串时相差八小时,通常是把 UTC 解析规则、目标 Location 和数值偏移混为一谈。本文用 Parse 与 ParseInLocation 对比说明“解释字符串”和“In 转换显示”的差别,并给出 RFC3339、数据库及比较时间的稳妥写法。368 收藏 -
本地能下载私有 Go 模块,pkg.go.dev API 仍可能返回 not found。本文解释公共索引边界、GOPRIVATE 的真实作用,并给出私有代理与本地排查方案。368 收藏 -
Go Ed25519 验签失败时,优先核对原始消息、公钥和签名字节是否一致,再检查 Base64、十六进制解码与长度边界。368 收藏 -
Go context.Value 取值失败,应区分 key 未命中与值类型断言失败,再比较 key 的动态类型和动态值。本文用原创示例解释定义类型、别名与跨包约定,并提供私有 key 的类型化访问封装。368 收藏