Go教程技术文章
-
Go 的 Cmd.WaitDelay 用来限制子进程退出后 I/O 管道迟迟不关闭造成的 Wait 阻塞。本文用一个可运行的小实验拆开超时、管道关闭和退出状态的关系,并给出安全的错误判断方式。346 收藏 -
Go 1.23 引入的 os.CopyFS 可以把 embed.FS 等 fs.FS 内容复制到磁盘,但不会覆盖已有文件。本文用一个配置目录示例讲清创建权限、覆盖错误、符号链接和可重复部署的核对方法。374 收藏 -
io.MultiWriter 会按传入顺序逐个写入,某个 Writer 返回错误或短写入后立即停止,不会继续后面的目标。本文用日志分流场景拆解部分写入、ErrShortWrite、重试与一致性边界。279 收藏 -
time.Duration 本质是纳秒数量的 int64 别名。参与整数除法时结果会向零截断,先明确单位和余数,再决定是否转换为浮点或保留纳秒精度。242 收藏 -
Golang · Go教程 | 1星期前 | golang · 基准测试 · testing · 性能 · benchmark · 基准测试 Go Go 1.24 testing.B.Loop 性能验证
Go 1.24 引入 testing.B.Loop 后,基准函数不必再手动围绕 b.N 组织循环。本文用一个可运行的小实验说明循环边界、计时窗口、结果保活和旧写法迁移,并给出核对 ns/op 与自定义指标的检查方法。156 收藏 -
Go 的 iter.Pull 把 push-style 迭代器变成 next/stop 拉取接口,但提前结束时必须调用 stop 让 yield 协程收尾。本文用资源清理、重复 stop 和测试替身说明它的生命周期与并发边界。133 收藏 -
slices.DeleteFunc 会把匹配元素移除,但含指针的切片还要关注尾部槽位是否被清零。本文从 Go 版本行为、底层数组引用和 GC 验收三个角度给出可运行示例,说明什么时候需要关注内存保留以及如何用 cap、runtime.MemStats 和测试确认结果。396 收藏 -
Golang · Go教程 | 1星期前 | WEB开发 · golang · go · net/http · ServeMux · Go 模式匹配 路由冲突 http.ServeMux PathValue
Go 1.22 扩展了 http.ServeMux 的方法、通配符和优先级规则。本文用最小可运行示例排查重叠模式、405 响应和 PathValue 取值,给出注册阶段与请求阶段的验证清单。144 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · 性能优化 · 字符串处理 · Go教程 · 内存分配 strings.Split Go 1.24 Go 迭代器 Go strings.SplitSeq
Go 1.24 的 strings.SplitSeq 返回迭代器,适合边读边处理分隔文本。本文对照 Split 的切片语义,验证空分隔符、连续分隔符和提前停止,并说明什么时候不该为了省一个切片改写代码。363 收藏 -
Go 1.21 引入的 maps.Clone 可以复制映射,但它只复制键和值本身,不会递归复制切片、指针等引用值;本文用可运行示例拆开浅拷贝、nil、空 map 和并发边界。158 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · golang · 测试 · go · 迭代器 · 字符串处理 · Go 迭代器 换行 range over function strings.Lines
Go 1.24 引入的 strings.Lines 返回一次性迭代器,逐行保留换行符;本文用可运行示例拆开末尾换行、空输入、最后一行和重复消费等边界,并给出测试写法。470 收藏 -
用 Go os.DirFS 暴露静态资源或模板目录时,关键不是把绝对路径换成相对路径,而是确认 io/fs 的 ValidPath 约束、根目录语义和测试边界。本文用一个最小文件服务示例拆开这些判断。148 收藏 -
Go 1.25 为 sync.WaitGroup 增加 Go 方法,把启动 goroutine、计数和 Done 收口到一个调用里。本文对比旧写法,说明空 WaitGroup 的启动时机、panic 约束、嵌套任务和复用边界。179 收藏 -
slices.Grow 不是无条件提速开关。本文用批量追加日志事件的场景,拆开容量预估、底层数组复用、负数参数和基准验证,给出可以落地的使用边界。206 收藏 -
Go 1.24 新增的 testing.T.Context 会在测试函数结束、Cleanup 执行前取消上下文。本文用一个可复现的子协程收尾场景,讲清取消时机、Cleanup 顺序、超时边界和回归核对方法。454 收藏