Go语言技术文章
-
用 Go Doublestar 的 WithNoFollow 控制递归匹配遇到目录符号链接时的遍历边界,并说明固定路径前缀、WithFilesOnly 与 WithFailOnIOErrors 的组合注意事项。102 收藏 -
Go sync.Mutex 不支持同一 goroutine 的重入。本文从调用栈定位嵌套 Lock,明确解锁责任,并用带锁入口与无锁核心函数拆分临界区。102 收藏 -
围绕 Go 1.23 引入的 iter.Pull,说明 next 返回值与 ok 标志如何判断空序列和自然结束,并用 defer stop 覆盖提前退出、限量读取与找到目标值等边界场景。102 收藏 -
Go 1.27 提供 goroutineleak profile。本文以 HTTP 服务为例,说明如何采集基线、比较增长差异、定位阻塞通道,并用可取消的退出路径完成修复。101 收藏 -
go list 看到的模块 Go 版本不等于当前真正执行编译的工具链版本。本文拆解 go.mod 的 go 与 toolchain、GOTOOLCHAIN 自动选择、工作区和 CI 环境差异,并给出一套可复制的排查命令。101 收藏 -
Go 反射修改字段没有生效,通常是反射值不可设置、字段未导出或赋值类型不匹配。本文用 ValueOf、Elem、CanSet 和字段类型检查说明安全更新路径。101 收藏 -
Go log/slog 的 Handler.WithAttrs 用来为新 Handler 保留公共属性。本文从 Logger.With 的调用关系讲起,说明如何附加请求字段、为什么原 Handler 不会被修改,以及自定义 Handler 如何处理属性切片、分组和 LogValuer。101 收藏 -
Go image/draw 的偏移绘制关键在目标矩形 r.Min 与源点 sp 的对齐。本文用最小示例说明 image.Rect、源图像边界、越界裁剪以及 draw.Src 和 draw.Over 的选择。101 收藏 -
Go text/template 默认允许 map 缺键继续执行,容易把数据问题变成空白或。本文用 Template.Option("missingkey=error") 让缺字段在 Execute 阶段返回错误,并对比 default、zero、error 的边界。 101 收藏 -
Go Doublestar 的 Glob 面向 io/fs,模式固定使用正斜杠;FilepathGlob 面向宿主机路径,会按系统处理输入并返回系统分隔符。本文用同一类递归匹配场景说明两者的选择边界。101 收藏 -
Go groot可用Get按对象键名读取ROOT数据,但需要判断直方图类型。本文给出TH1D、TH1F、TH1I读取与hbook转换示例,说明分箱权重、错误反馈和目录范围。101 收藏 -
Go maps.Clone 适合把一个 map 配置复制成独立的顶层工作副本,再组合读取、更新和快照导出逻辑。本文从浅复制边界出发,搭建一个小型配置工具,并说明 nil、嵌套切片和并发访问的取舍。101 收藏 -
Go 文件写入成功不代表 Sync 和 Close 一定成功。本文按 Write、Sync、Close 的责任边界拆开说明错误处理顺序,并给出既能延迟关闭又不会覆盖前置错误的写法。101 收藏 -
Go 的 slog.HandlerOptions.ReplaceAttr 会在 TextHandler 或 JSONHandler 输出前接收每个非 Group 属性。把 groups 与 Key 组合成完整路径后,可以集中执行全量替换、局部掩码或返回零 Attr 删除字段,并用缺失断言验证敏感原文没有进入日志。100 收藏 -
Go 交叉编译在 CGO_ENABLED=1 时失败,通常不是 GOOS 或 GOARCH 写错,而是目标 C 编译器、sysroot 或原生库没有对齐。本文按基线、工具链、依赖和产物四层给出排查方法。100 收藏