Go语言技术文章
-
客户端断开后,Go Handler 不会因为看到断开就自动停止全部代码;要让下游 HTTP、数据库和循环及时收尾,必须从 r.Context() 监听取消并继续向下传递。472 收藏 -
Go 的 encoding/gob 适合在 Go 程序之间保存结构化本地缓存。本文用带版本和过期时间的结构体演示原子写入、恢复、缓存失效处理,以及导出字段和结构体演进时的边界。472 收藏 -
Go 的 http.Cookie 设置成功后,浏览器是否发送主要由 Path 与请求 URL 的路径匹配决定。本文解释显式 Path、默认路径、排查顺序,以及删除 Cookie 时的配对规则。472 收藏 -
Go gzip.Writer.Flush 会让流式数据更早可见,但高频调用会同步写出、增加同步标记并切碎压缩批次。本文给出消息边界、HTTP 缓冲和压测判断方法。472 收藏 -
从一个 Go 请求卡住的现场出发,演示如何通过最小复现、堆栈观察和锁路径梳理,定位 Mutex 忘记 Unlock 的问题,并用 defer 解锁和边界检查修复。471 收藏 -
Go 1.23 引入的 unique 包可以把重复值映射到可比较的 Handle,但它不是无上限缓存。本文用字符串标签场景说明 unique.Make 的比较方式、Handle 生命周期和不适合使用的业务边界。471 收藏 -
Go 用 os.Stat 判断文件是否存在时,不能把所有非 nil 错误都当成不存在。本文区分缺失、权限不足和其他系统错误,并给出 errors.Is 的安全写法。471 收藏 -
atomic.Uint64.Load 只保证单个数值的原子读取,不会把多个计数器自动组成业务快照。本文用 RWMutex 和 atomic.Pointer 说明组合一致性的实现取舍。471 收藏 -
Go 使用 net/textproto.ReadMIMEHeader 报非法字段时,按缺少冒号、字段名 token、字段值字节和首行缩进四个边界定位,并用原始转义与十六进制日志修复上游输入。471 收藏 -
Golang · Go问答 | 1个月前 | golang · 并发编程 · bytes.Buffer · 内存管理 · Go问答 · bytes reset bytes.Buffer Go内存 切片别名
Go 里把 bytes.Buffer.Bytes() 返回的切片保存下来,再复用 Buffer 写下一条消息,旧数据为什么会跟着变化?关键在于 Bytes 返回的是底层数组视图,不是独立副本。本文用消息编码场景说明 Reset、切片别名、Clone 拷贝和并发边界,给出可复查的安全写法。470 收藏 -
Go 1.23 的 slices.Collect 能把迭代器收集成切片,但它不是零成本转换。本文从惰性生成、空序列、容量增长和大结果集几个边界入手,配合可运行代码说明什么时候适合收集,以及如何避免一次性占满内存。470 收藏 -
Go 里用 CmdContext 设置超时后,父命令返回并不等于整棵子进程树已经退出。本文用可复查的命令场景解释 context 取消、Wait 返回、子进程残留和回收验证之间的边界,给出带退出状态检查的处理方式。470 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · golang · 测试 · go · 迭代器 · 字符串处理 · Go 迭代器 换行 range over function strings.Lines
Go 1.24 引入的 strings.Lines 返回一次性迭代器,逐行保留换行符;本文用可运行示例拆开末尾换行、空输入、最后一行和重复消费等边界,并给出测试写法。470 收藏 -
Go 1.22 引入的 Request.PathValue 不是从 URL.Path 里随便切字符串,而是读取 ServeMux 匹配结果中的命名通配符。本文用最小路由示例核对普通通配符、{name...}、未匹配请求、URL 解码和 SetPathValue 的边界。470 收藏 -
Go 1.25 为 go doc 增加 -http 选项,可以把指定对象的本地文档通过浏览器查看。本文用 net/http 演示启动方式、端口排查和文档范围判断。470 收藏