Go教程技术文章
-
用单槽触发缓冲和单 worker 设计 Go time.Ticker 周期任务,避免慢任务重叠执行,同时保留一次下一轮触发,并说明取消、告警与可靠队列边界。110 收藏 -
讲清 Go time.Timer 复用时 Stop 返回值、旧语义排空 C 通道和 Go 1.23 新计时器语义的差异,并给出单一所有者的安全模板。469 收藏 -
Go 的 text/template 与 html/template API 很像,但输出边界不同:日志和邮件纯文本使用 text/template,浏览器 HTML 使用 html/template。本文用一个最小渲染项目对比普通文本、HTML 文本节点和 href 属性中的转义结果,并说明 template.HTML 的信任边界。275 收藏 -
围绕 Go errors.As 讲清自定义错误类型、错误包装链、Unwrap 和目标指针的配合方式,帮助业务层按稳定字段分层处理错误而不是比较易变的文本。471 收藏 -
Go errors.Join适合把多个清理或批处理失败原因合并为一个error返回,同时保留errors.Is和errors.As的可判定链。本文用资源关闭场景说明nil处理、错误遍历、上下文包装和兼容边界。459 收藏 -
Golang · Go教程 | 5天前 | 命令行工具 · Go教程 · flag.NewFlagSet ContinueOnError Go flag.FlagSet Go 子命令 Go 命令行参数解析
用 Go flag.FlagSet 为 serve、export 等子命令隔离参数、帮助和错误输出,掌握 ContinueOnError、SetOutput、Args 与位置参数的组织边界。355 收藏 -
讲清 Go os/exec 中 Cmd.Dir、cmd.Environ 和 Env 的配置顺序,并用独立缓冲区保存 stdout、stderr,区分启动失败与 ExitError。395 收藏 -
通过值接收者、指针接收者和 reflect.Type.NumMethod 的小实验,解释 Go 方法集如何影响接口实现判断,并给出编译期断言与边界检查方法。491 收藏 -
Go reflect 读取结构体标签时,要用 Lookup 区分缺失与空值,并用 IsExported、CanInterface 过滤未导出字段,避免反射访问触发 panic。348 收藏 -
用 go test -benchmem 和 testing.B.ReportAllocs 读懂 B/op、allocs/op,再通过子基准、计时边界、逃逸分析与内存剖析定位 Go 基准中的临时对象来源。409 收藏 -
Go fuzz 测试发现崩溃输入后,如何利用 testdata/fuzz 语料目录在普通 go test 中稳定回归。195 收藏 -
围绕 Go 子测试 t.Parallel 的调度边界,区分只读夹具与可变资源,给出每个子测试独立创建、清理和用 -race 重复验证的做法。228 收藏 -
用 Go t.Cleanup 把资源创建与释放登记绑定起来,理解后进先出、父子测试生命周期、提前失败和清理错误记录的实现边界。481 收藏 -
用 Go testing.T.TempDir 替代手工临时目录清理,掌握测试文件隔离、并行子测试、GOTMPDIR 与迁移边界。308 收藏 -
用一个可复用的 slog Handler 包装层统一过滤 password、token、email 等敏感字段,同时覆盖 WithAttrs、WithGroup 和嵌套 Group,业务日志调用保持不变。415 收藏