Go问答技术文章
-
说明 bbolt Get 返回值的事务有效期,给出事务内复制的读取接口,并区分键缺失、空值及错误,明确缓存和异步任务的数据持有边界。224 收藏 -
把 Viper 的配置优先级转成 Koanf 显式加载顺序,处理未传参数、空环境变量、代码覆盖与快照重载,给出受控来源合成示例。224 收藏 -
Go replace 指向本地路径在 CI 失效,通常是 checkout 范围、相对路径基准、替代目录 go.mod 或主模块作用域不一致。本文按主模块、模块文件、require/replace 配对和流水线输入给出排查与修复顺序。224 收藏 -
Go 启用 GOEXPERIMENT=simd 后构建失败,应分别核对工具链、实验环境、目标架构与 API 版本。本文提供包探针和项目构建排查命令,说明标量回退、基准比较方法与实验功能上线边界。224 收藏 -
Go httptrace.ClientTrace 可以把一次 HTTP 客户端请求拆成 DNS 查询、连接建立和连接复用等观测阶段。本文解释 DNSStart/DNSDone 与 ConnectStart/ConnectDone 的计时边界,并给出并发安全的请求级记录方式。224 收藏 -
Go sql.Tx 提交成功后再 Rollback 返回 ErrTxDone,表示事务对象已经结束,并不否定提交结果。通过事务收尾函数说明 defer 回滚、错误链保留、Commit 失败边界与收尾所有权。224 收藏 -
Go 测试中 t.Parallel 与环境变量冲突时,先检查并行祖先和共享状态,再将环境适配测试串行化,用独立配置注入支持并行业务测试。223 收藏 -
Go select 的多个通信分支同时就绪时,会从可继续的分支中做均匀伪随机选择,不会按 case 的书写顺序固定优先。本文结合排查现场、统计观察和显式优先处理方案,说明 nil channel、关闭 channel 与 default 的边界。223 收藏 -
go-echarts 的 Render 方法主要负责把图表配置写入 HTML 输出,真正把配置转成可交互图形还要依赖浏览器加载并执行前端资源。本文按输出边界、资源路径和浏览器执行三个信号定位空白图表。223 收藏 -
Go net.ListenConfig 看起来不生效时,先确认监听是否由 lc.Listen 创建,再分别检查 Control 的执行时机、context 的作用范围、HTTP Server 是否复用了监听器,以及 KeepAlive 的连接级边界。本文用几个最小示例整理出一套可复用的排查顺序。223 收藏 -
使用 encoding/json.Decoder 读取连续 JSON 值时,Decode 返回 io.EOF 表示没有下一个值,是正常结束;io.ErrUnexpectedEOF、语法错误和类型错误都不能吞掉。本文用独立值流和数组两种边界说明正确写法。223 收藏 -
Go 中 fmt.Errorf 的 %w 会保留错误链,%v 只格式化文本。本文用 errors.Is 对比两种写法,并给出服务层包装、调用层判断的边界和示例。223 收藏 -
Go os.DirEntry.Info 获取的是目录项对应的 FileInfo,但条目在目录读取后被删除或重命名时可能返回错误;符号链接场景还要区分链接本身与目标。本文给出简洁的读取和错误处理边界。222 收藏 -
Gonum 的 Dijkstra 会拒绝可达负权重边,因为负边会破坏其贪心确定性。本文解释 panic 的原因,并演示如何用 BellmanFordFrom 处理负权边与负环。222 收藏 -
Golang · Go问答 | 21小时前 | 错误处理 · go · Context · Go context errors.Is context.DeadlineExceeded context.Canceled
Go 返回上下文错误时,不要比较错误字符串。用 errors.Is 区分主动取消与截止时间耗尽,再按需用 ctx.Err 和 context.Cause 保留请求边界与业务原因。222 收藏