Go语言技术文章
-
Go select 的多个通信分支同时就绪时,会从可继续的分支中做均匀伪随机选择,不会按 case 的书写顺序固定优先。本文结合排查现场、统计观察和显式优先处理方案,说明 nil channel、关闭 channel 与 default 的边界。223 收藏 -
go-echarts 的 Render 方法主要负责把图表配置写入 HTML 输出,真正把配置转成可交互图形还要依赖浏览器加载并执行前端资源。本文按输出边界、资源路径和浏览器执行三个信号定位空白图表。223 收藏 -
Go token.File.Offset 用于把文件内的 token.Pos 转回从 0 开始的字节偏移。本文从 FileSet、File.Pos 与 File.Offset 的关系讲起,结合 AST 位置、NoPos、越界位置和 UTF-8 字节列,给出适合生产诊断与源码工具的边界写法。223 收藏 -
Go net.ListenConfig 看起来不生效时,先确认监听是否由 lc.Listen 创建,再分别检查 Control 的执行时机、context 的作用范围、HTTP Server 是否复用了监听器,以及 KeepAlive 的连接级边界。本文用几个最小示例整理出一套可复用的排查顺序。223 收藏 -
用一个任务集合实现 Go iter.Seq 范围迭代器,说明 for range、提前停止、闭包分配与并发修改边界,帮助批处理减少临时切片。223 收藏 -
用一个自定义 ServeMux 示例说明 Go expvar 如何暴露 JSON 运行指标,并按 404、空结果、重复注册和动态值异常逐项排查。223 收藏 -
使用 encoding/json.Decoder 读取连续 JSON 值时,Decode 返回 io.EOF 表示没有下一个值,是正常结束;io.ErrUnexpectedEOF、语法错误和类型错误都不能吞掉。本文用独立值流和数组两种边界说明正确写法。223 收藏 -
Go 中 fmt.Errorf 的 %w 会保留错误链,%v 只格式化文本。本文用 errors.Is 对比两种写法,并给出服务层包装、调用层判断的边界和示例。223 收藏 -
讲清 go/types.Config.Check 为什么需要 Importer,以及怎样接入 importer.Default 解析导入包、收集类型信息并处理检查错误。222 收藏 -
通过 Go net.Resolver 隔离 DNS 策略,区分 PreferGo、Dial 与 StrictErrors,并将解析器绑定到 HTTP 客户端。结合代码解释超时、代理、连接复用及配置切换的适用边界。222 收藏 -
Go os.DirEntry.Info 获取的是目录项对应的 FileInfo,但条目在目录读取后被删除或重命名时可能返回错误;符号链接场景还要区分链接本身与目标。本文给出简洁的读取和错误处理边界。222 收藏 -
Gonum 的 Dijkstra 会拒绝可达负权重边,因为负边会破坏其贪心确定性。本文解释 panic 的原因,并演示如何用 BellmanFordFrom 处理负权边与负环。222 收藏 -
本文从可选配置键值拆分的排查现场出发,说明 strings.Cut 的 found 返回值、空输入处理、缺少分隔符和空字段边界,并给出可复用的 Go 解析示例。222 收藏 -
Golang · Go问答 | 1天前 | 错误处理 · go · Context · Go context errors.Is context.DeadlineExceeded context.Canceled
Go 返回上下文错误时,不要比较错误字符串。用 errors.Is 区分主动取消与截止时间耗尽,再按需用 ctx.Err 和 context.Cause 保留请求边界与业务原因。222 收藏 -
在 Go 的 log/slog 中,带 key 的 nil 属性不是空 Attr。本文拆开 slog.Value 的零值、KindAny、Resolve 和自定义 Handler 的输出策略,说明如何保留 key=null、何时丢弃空 Attr,以及 typed nil 需要注意什么。222 收藏