Go教程技术文章
-
用 Go runtime.SetFinalizer 说明终结器的触发条件、KeepAlive 的必要性、显式 Close 与终结器兜底的边界,并给出可运行的资源生命周期示例。348 收藏 -
bytes.FieldsSeq 从 Go 1.24 开始提供按 Unicode 空白切分字节串的单次迭代器。本文对比 bytes.Fields,解释 subslice、空白边界、迭代提前停止和底层字节切片生命周期。348 收藏 -
掌握 Go database/sql 的事务收尾方式:用 defer tx.Rollback 做失败兜底,所有操作走 sql.Tx,只有 Commit 返回 nil 才使用事务结果,避免提交错误被误判为成功。348 收藏 -
Go 的 testing.T.Helper 没有返回值,它用于标记测试辅助函数,让失败日志跳过辅助层并更接近真正的测试调用位置。本文用原创示例说明调用位置、失败报告、并发边界和核对方法。348 收藏 -
Go reflect 读取结构体标签时,要用 Lookup 区分缺失与空值,并用 IsExported、CanInterface 过滤未导出字段,避免反射访问触发 panic。348 收藏 -
Go 的 URL.Fragment 保存解码语义,RawFragment 仅是原始编码提示。本文说明 EscapedFragment 如何验证并保留 %2F 等表示,以及修改、构造和批量输出时如何避免二次编码。348 收藏 -
Go net/url 处理中,查询参数、动态路径片段和完整 URL 不能共用一种编码方式。本文用 url.Values、QueryEscape、PathEscape 与 EscapedPath 说明如何只编码查询参数并保留路径斜杠。347 收藏 -
Golang · Go教程 | 1星期前 | 错误处理 · 数据校验 · Go教程 · Go compress/gzip ErrChecksum gzip.Reader io.ErrUnexpectedEOF
Go 的 gzip.Reader 只有在完整读取到 gzip trailer 后才能完成 CRC32 和原文长度校验。本文用原创示例说明如何区分截断数据、校验和错误、非法头部与正常 EOF。347 收藏 -
Go 1.26 的 //go:fix inline 可让库作者把旧 API 的兼容包装函数转成自动迁移规则。本文用改名与参数重排示例说明声明方式、go fix -diff 预览、批量执行和回归检查。347 收藏 -
os.Root 把受信任目录封装成文件访问边界:Root 方法可跟随仍位于根内的符号链接,但任何路径组件一旦解析到根目录之外就返回错误。本文给出安全打开模式、反例、平台限制和补丁版本提醒。347 收藏 -
从滚动日志窗口的实际场景出发,解释 slices.Clip 如何把切片容量收紧到长度,说明它与 slices.Clone、底层数组和 GC 回收之间的边界。346 收藏 -
Go 的 Cmd.WaitDelay 用来限制子进程退出后 I/O 管道迟迟不关闭造成的 Wait 阻塞。本文用一个可运行的小实验拆开超时、管道关闭和退出状态的关系,并给出安全的错误判断方式。346 收藏 -
用 Go 和原生前端表单搭一套可恢复的重复提交处理:客户端按钮状态负责体验,服务端幂等键负责最终一致,超时后通过查询接口确认结果。346 收藏 -
Go 1.27 新增 strings.CutLast,适合把最后一次分隔符查找与切分写成一次调用。本文用路径、域名和空结果示例说明替代边界、兼容范围与测试方法。346 收藏 -
讲清 Go time.Timer Reset 返回值的真实含义,比较 Go 1.23 前后的通道语义,并给出单 goroutine、旧版本排空和发布检查的实用写法。346 收藏