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 JSON SyntaxError.Offset、InputOffset 与底层读取量,使用 errors.As 提取语法错误,并说明中文输入、截断和连续解码的定位注意点。348 收藏 -
Go slices.SortStableFunc 用三态比较函数排序结构体切片,并保留比较器判定相等元素的输入顺序。通过任务优先级示例说明降序比较、多字段规则、Clone 保护原排列、严格弱序与浅复制边界。348 收藏 -
Go 的 os.DirFS 可以把 fs.FS 的相对路径映射到指定目录,但它不是 chroot,也不会阻止目录内符号链接越出根目录。本文用 ReadFile、WalkDir 和 Go 1.24+ 的 os.OpenRoot 区分两种边界。348 收藏 -
Go 1.27 的 encoding/json/v2 默认拒绝 JSON 对象中的重复名称。本文用一个可复用的小函数说明如何识别重复键错误,以及何时显式使用 jsontext.AllowDuplicateNames(true) 兼容旧协议。348 收藏 -
通过 go/types.Info.Types 读取 TypeAndValue.HasOk,区分 map 索引、类型断言、channel 接收与普通表达式的 comma-ok 边界。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 收藏