Go教程技术文章
-
用 Go 的 io/fs.Sub 把嵌入文件系统收窄到一个子目录时,真正容易出错的是目录名和 Open 路径的边界。本文通过 embed.FS 示例拆开 fs.Sub、fs.ValidPath 与 fs.PathError 的关系,并给出可复现的排查方法。142 收藏 -
围绕 Go maps.DeleteFunc 清理不合格键,解释回调遍历期间的删除语义、判定函数副作用、nil map 行为与并发安全边界,并给出可验证的代码和检查清单。141 收藏 -
用 Go netip.Prefix.Contains 实现路由白名单时,IPv4、IPv4-mapped IPv6 与前缀长度必须先统一判断,本文给出可运行的核验方法。141 收藏 -
Golang · Go教程 | 13小时前 | 标准库 · 性能 · 迭代器 · 字符串处理 · Go教程 · Go Go 1.24 iter.Seq strings.SplitAfterSeq 字符串分段
strings.SplitAfterSeq 从 Go 1.24 开始返回单次使用的 iter.Seq[string],按分隔符产出保留分隔符的字符串片段。本文用一个可运行的小实验说明如何消费它、如何提前停止,以及空分隔符和无匹配时该如何验收。141 收藏 -
Golang · Go教程 | 2星期前 | HTTP · go · 浏览器 · 前端数据上报 · Go Beacon API navigator.sendBeacon 页面关闭上报 Go HTTP 接收 Beacon keepalive fetch
页面关闭、切换标签页或手机锁屏时,普通 fetch 可能来不及把埋点送到服务端。本文用 Go 接收 navigator.sendBeacon 的 POST 请求,拆开 Content-Type、204 响应、队列大小与 keepalive fetch 兜底边界,给出可验证的处理方式。140 收藏 -
用一个可复现的分片读取场景,说明 os.File.ReadAt 为什么适合并发定位读取,如何用 io.SectionReader 限定区间,以及短读、EOF 和缓冲区复用的验收边界。139 收藏 -
用 Go 的 io/fs.ReadDir 和 os.DirFS 按目录层级筛选文件,解释排序、DirEntry 判断、错误处理与大目录内存边界,并给出可运行示例。135 收藏 -
Go 1.21 引入的 clear 内置函数适合批量清空 map,但它并不等于释放底层容量。本文用缓存复用、重新分配和基准测试说明三种清理策略的边界。134 收藏 -
Go 的 iter.Pull 把 push-style 迭代器变成 next/stop 拉取接口,但提前结束时必须调用 stop 让 yield 协程收尾。本文用资源清理、重复 stop 和测试替身说明它的生命周期与并发边界。133 收藏 -
Go 的 time.Duration.Abs 可以把负持续时间转成正值,但对 math.MinInt64 有特殊处理:结果是 math.MaxInt64。本文从源码语义、正常调用和边界测试三个角度说明如何安全展示耗时。132 收藏 -
用 Go crypto/rand 读取固定长度随机字节时,区分 Reader 的短读语义、io.ReadFull 的完整读取保证与错误传播边界,并用可控测试替身复核实现。129 收藏 -
从切片别名、append 扩容和底层数组保留三个角度,说明 Go slices.Clone 的适用边界,并用可运行示例验证复制后的修改、nil 语义与内存释放判断。126 收藏 -
Golang · Go教程 | 3天前 | HTTP · go · 连接池 · 性能排查 · net/http · http.server 连接泄漏 Go ConnState StateIdle HTTP长连接
用 http.Server.ConnState 观察 Go HTTP 连接从 StateNew 到 StateClosed 的状态变化,区分慢请求、Keep-Alive 和未收尾连接,并给出计数、超时与复核方法。125 收藏 -
用一个配置加载器看懂 Go 一次性初始化的惰性加载、错误复用和并发安全边界,给出可验证的最小实现与避坑清单。125 收藏 -
用 Go 的 net/http.ServeContent 搭一个可验证的文件下载接口,拆清 Range、If-Modified-Since 与 Last-Modified 的判断边界。125 收藏