Go语言技术文章
-
Go regexp 中文匹配为空时,按输入、UTF-8 码点、ASCII 字符类、Unicode 类和字节下标逐项排查,解决中文匹配与位置错位问题。496 收藏 -
Go build tags 选错实现文件时,先确认 GOOS、GOARCH、CGO_ENABLED,再用 go list 对照 GoFiles 与 IgnoredGoFiles,最后检查文件名后缀、//go:build 表达式和 -tags 参数是否一致。496 收藏 -
Go 的 t.Run 会为同名子测试自动追加序号保证唯一,但日志仍可能难以区分业务场景。本文用稳定字段组合测试名,改善失败定位和 -run 筛选。496 收藏 -
Go 1.22 及更高版本可以用 http.Request.SetPathValue 在单元测试中注入路径变量,再通过 PathValue 让处理器按生产代码读取。本文区分处理器测试与 ServeMux 路由测试,并说明空值、覆盖和编码边界。496 收藏 -
用context.WithTimeout或WithCancel建立脚本取消条件,再通过LState.SetContext绑定。示例说明执行错误、资源清理与Go回调的协作取消边界,避免并发关闭同一Lua状态。496 收藏 -
Go 容器内存限制不是把 SetMemoryLimit 当成硬上限,而是先给 cgroup 预留运行时和外部内存,再用 GOMEMLIMIT 或 SetMemoryLimit 约束 Go runtime 的软目标。本文按预算、配置、观测和回退步骤给出可复用做法。496 收藏 -
go test 只会复用满足缓存条件的成功测试结果。环境变量改变后仍看到缓存提示,先确认测试是否读取了该变量、变量是否真的传入进程,再用 -count=1 强制本次重新执行。495 收藏 -
Go context.AfterFunc 可在上下文取消后执行清理,但 stop 不代表清理完成。通过独占停止句柄和完成通道,组织正常返回与取消回调,接收清理错误,并明确并发访问、等待和资源所有权的限制。495 收藏 -
Go 可以用 //go:embed 把模板目录编译进程序,再把 embed.FS 交给 html/template.ParseFS 读取。本文重点说明目录匹配、正斜线路径、错误处理和复用方式。495 收藏 -
Go 遍历目录时,可以在 filepath.WalkDir 回调中判断 DirEntry,再用 filepath.SkipDir 跳过指定子树。本文比较本地路径与抽象 FS 的写法,说明目录匹配、错误处理、SkipAll 和符号链接等边界。495 收藏 -
Go plugin.Open 加载 .so 时,版本不匹配通常不是单看 Go 版本,而是宿主与插件的工具链、构建条件和共享依赖没有保持一致。本文按排查顺序定位原因,并给出统一构建方案。495 收藏 -
bufio.Reader.WriteTo 返回的是已复制字节数 n 和复制错误 err。目标 Writer 可能在部分写入后失败,调用方应同时保存 n 与 err,并区分完整复制、目标写入失败和源读取失败。495 收藏 -
Go 服务出现内存指标突增时,不能只看 Sys 或单次 HeapAlloc。本文用 runtime.MemStats 建立采样快照,结合堆保留、对象数量、GC 次数和分配速率区分短时峰值、缓存保留与持续增长。495 收藏 -
Go 事务业务代码返回 nil 并不代表提交成功。本文用可复用的 WithinTx 函数分别处理 BeginTx、业务执行、Rollback 与 Commit 错误,并说明上下文取消、panic 和 sql.ErrTxDone 的边界。495 收藏 -
robfig/cron/v3 默认采用分钟开头的五段规则。本文说明 WithSeconds 六段秒制、SecondOptional 兼容模式及 ParseStandard 的区别,并给出处理注册错误和停止调度的完整示例。494 收藏