Go语言技术文章
-
Go 测试使用 t.TempDir 创建临时目录时,目录会在当前测试及其子测试全部结束后自动清理。本文拆解清理时机、并行子测试、路径拼接和失败复现边界,给出可直接回归的测试写法。145 收藏 -
Golang · Go问答 | 2星期前 | 并发 · time · 定时任务 · Timer · Ticker · Go问答 · 定时器 Go 定时任务 停止 time.Ticker time.After time.NewTimer
Go 里一次性超时、可重置等待和周期任务分别适合 time.After、time.NewTimer 与 time.Ticker。本文用三个小场景对比它们的触发语义、停止方式、慢任务边界和 Go 1.23 定时器变化,给出可直接复用的选择规则。144 收藏 -
Go channel 关闭后,接收方可以用 comma-ok 判断状态,也可以用 range 自动读到结束;真正容易出错的是发送方与关闭方的职责边界。本文用最小示例说明判断、排空和并发收尾的正确写法。142 收藏 -
Go 1.24 引入 encoding.TextAppender 和 BinaryAppender。本文从日志缓冲区场景出发,验证 AppendText 的追加语义、错误回退和分配边界。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 1.21 引入的 clear 内置函数适合批量清空 map,但它并不等于释放底层容量。本文用缓存复用、重新分配和基准测试说明三种清理策略的边界。134 收藏 -
sync.Once 只保证初始化逻辑最多执行一次,失败也不会自动重试。通过区分一次性成功初始化、可重试初始化和启动失败退出,避免把错误状态永久缓存进服务进程。133 收藏 -
context.WithCancel 只能表达主动取消,不能凭空产生超时。本文用一个可运行的 HTTP 调用场景拆开取消传播、deadline 和超时错误的边界,说明如何选择 WithCancel、WithTimeout 与 WithDeadline。132 收藏 -
用 Go crypto/rand 读取固定长度随机字节时,区分 Reader 的短读语义、io.ReadFull 的完整读取保证与错误传播边界,并用可控测试替身复核实现。129 收藏 -
Go 1.23 的 slices.Chunk 能把切片按固定大小拆成批次,但空切片、n 小于 1、最后一批不足和底层数组共享都容易被误读。本文用批量写入场景说明它的返回边界、内存行为与测试方法。127 收藏 -
从切片别名、append 扩容和底层数组保留三个角度,说明 Go slices.Clone 的适用边界,并用可运行示例验证复制后的修改、nil 语义与内存释放判断。126 收藏 -
Golang · Go教程 | 1天前 | HTTP · go · 连接池 · 性能排查 · net/http · http.server 连接泄漏 Go ConnState StateIdle HTTP长连接
用 http.Server.ConnState 观察 Go HTTP 连接从 StateNew 到 StateClosed 的状态变化,区分慢请求、Keep-Alive 和未收尾连接,并给出计数、超时与复核方法。125 收藏 -
用一个配置加载器看懂 Go 一次性初始化的惰性加载、错误复用和并发安全边界,给出可验证的最小实现与避坑清单。125 收藏 -
这段内容聚焦一个很实用的问题:在 Go 里,怎么把括号中的内容准确提取出来。常见做法主要有两类:一类是用 regexp 包配合捕获组来匹配,灵活度更高;另一类是借助 strings.Index 做轻量级定位,写法更直接、开销也更小。接下来会结合代码示例、性能对比和边界情况处理,把这两种方式各自适合什123 收藏