Go问答技术文章
-
自定义错误实现 Error 并不等于 errors.Is 能按业务含义匹配。本文从默认相等规则出发,说明何时实现 Is、如何按稳定字段比较,以及 Is、Unwrap 和哨兵错误的职责区别。466 收藏 -
本文解释 Go CompareAndSwap 为什么只能确认当前值,沿着 A→B→A 时序说明 ABA 风险,并给出指针与版本号绑定、生命周期和重试边界的处理方法。466 收藏 -
讲清 Go io/fs.Sub 如何把嵌入文件系统的子目录映射为新根,并结合 fs.ValidPath、fs.ReadFile 与业务白名单处理路径边界;同时说明它不是符号链接安全沙箱。466 收藏 -
Golang · Go问答 | 2个月前 | 并发 · golang · csv · 数据处理 · Go问答 · 数据导入 encoding/csv csv.Reader Go问答 ReuseRecord 切片复用
encoding/csv.Reader 开启 ReuseRecord 后,Read 返回的记录切片会复用底层数组。本文用导入任务中的异步保存场景说明字段为什么会被后续行覆盖,以及什么时候必须复制记录。465 收藏 -
Go 1.27 将 runtime/pprof 的 goroutineleak profile 正式开放,用垃圾回收可达性发现一部分永久阻塞的 goroutine。本文说明采集入口、HTTP 端点、可识别范围和全局可达对象造成的漏检边界。465 收藏 -
Go HTTP 请求已经超时,但服务端日志还在继续时,先分清客户端、请求上下文和服务端 deadline 三个边界,再检查下游是否真正收到 ctx,最后用 Err 与 Cause 记录责任归属。465 收藏 -
Go 请求同时设置 http.Client.Timeout 和 context.WithTimeout 时,最早到期的边界会取消请求。本文用截止时间、错误类型和受控实验判断超时来源,并给出生产环境的配置取舍。465 收藏 -
Go 的 exec.Cmd.Environ 返回当前命令环境的副本。本文解释旧快照、Env 继承、重复键和启动前检查的关系,给出避免读不到刚设置环境变量的实用写法。465 收藏 -
FileTransportFS 常与 file 协议绑定,是因为 http.Transport 按 URL scheme 分派已注册的 RoundTripper,而不是该函数内部强制拒绝其他协议。本文讲清 Go 1.22+ 的正确注册方式、直接替换 Transport 的区别、路径规则和迁移检查项。465 收藏 -
解释 Go flate.NewReaderDict 遇到错误字典时为何可能报 CorruptInputError,也可能无错误却产生错误字节,并给出字典 ID、输出上限、完整性校验与 zlib 替代方案。465 收藏 -
Go append 是否复用底层数组取决于容量。本文用 len、cap 和独立复制示例说明新旧切片互相影响的原因,并给出需要隔离时的处理方案。465 收藏 -
Golang · Go问答 | 3星期前 | channel · golang · select · 并发编程 · 性能排查 · channel default分支 忙等 time.Ticker context取消 Go select
本文解释 Go select 的 default 分支为何会把阻塞等待变成高频轮询,并分别给出移除 default、加入 Context、使用 Ticker、封装单次非阻塞尝试及处理关闭通道的改法。465 收藏 -
Go url.Parse 会把路径保存为解码后的 Path,原始的 %2F 等编码可能只保留在 RawPath 提示中。本文用 EscapedPath 说明如何稳定输出有效的原始路径编码,并处理提示失效的边界。465 收藏 -
Go netip.Addr.Next 在最大 IPv4 或 IPv6 地址之后返回零值 Addr,这是没有后继地址的正常语义。本文说明如何用 IsValid 识别边界并安全结束地址池遍历。465 收藏 -
charmap 是 8-bit 字符集编码器,无法覆盖所有 Unicode rune。本文说明如何用 EncodeRune 判断单个字符,用 Encoder 识别整段转换的错误边界,并选择拒绝、替代或 HTML 转义策略。465 收藏