Go语言技术文章
-
围绕 Go archive/tar.Reader 的 tar.Header 可选字段,说明如何按 Typeflag 处理普通文件、目录、链接、PAXRecords 与 Xattrs,并安全消费当前条目数据。501 收藏 -
Go 1.17 后未转义分号不再按旧规则拆分查询参数。本文用 net/http.AllowQuerySemicolons 在 ParseForm 前包住 Handler,说明重复键、空值、编码分号以及代理解析不一致的边界。482 收藏 -
Go path.Match 面向正斜杠分隔的路径名,* 和 ? 不会跨过斜杠。本文用代码说明分段匹配、字符类、转义、完整匹配与 ErrBadPattern 的区别,并说明什么时候应改用 filepath.Match。418 收藏 -
用 Go net.IPNet.Contains 判断地址是否落在 IPv4 或 IPv6 子网中,说明 ParseCIDR、地址族、掩码长度和 nil 边界,给出可复用的白名单判断写法。135 收藏 -
Go os.Root.ReadFile 适合在已打开的根目录边界内读取配置、模板和小型元数据。本文说明相对路径语义、ErrNotExist 与越界错误的区分、Root 生命周期,以及何时改用 Root.Open 进行流式读取。106 收藏 -
介绍 Go os.Root.Name 获取目录名称的用法,给出打开、读取和关闭示例,说明名称在诊断日志中的用途,以及它与绝对路径、实时位置和资源状态的区别。110 收藏 -
os.Root.WriteFile 适合直接写入并允许覆盖;如果业务要求目标已存在就失败,应改用 Root.OpenFile 加 O_CREATE|O_EXCL,再用 errors.Is 判断 os.ErrExist。本文还说明 Root 相对路径、父目录、权限位和 Close 错误的处理边界。200 收藏 -
使用 Go os.File 处理大文件时,减少临时分配的关键是复用调用方缓冲区,而不是给 Read 寻找隐藏开关。本文比较固定缓冲区、ReadAt/WriteAt、io.Copy 和 io.CopyBuffer 的适用边界。497 收藏 -
比较 Go 文件错误直接返回、文本转换、%w 包装与 errors.Join,给出保留写入和关闭错误的示例,并说明 errors.Is、errors.As 及资源清理的使用边界。373 收藏 -
Go 的 os.File 是文件句柄,不是可直接填写字段的配置结构。本文用独立配置表达可选权限、偏移、截断和同步策略,并说明打开、写入、失败处理与关闭的职责边界。260 收藏 -
Go net/url.URL 的临时分配通常来自重复 Parse、查询参数编码和最终字符串输出,而不是 URL 结构体本身。本文用可复用 URL、受控 RawQuery 和 Go 1.24+ 的 AppendBinary 组合,说明如何减少循环中的短命对象,并给出 Clone、JoinPath、String 与基准测试的取舍。172 收藏 -
Go 的 net/url.URL 不负责保存解析失败原因,应该保留 url.Parse 返回的 error,并用 errors.As 提取 url.Error 的操作名、原始 URL 与底层错误。460 收藏 -
Go token.File.MergeLine 只合并内存中的行偏移表,不会改写源码字节。本文用最小示例说明行号范围、Lines 变化、Position 换算和非法行号 panic 边界。227 收藏 -
说明 Go net/url.URL 的缺省字段、查询空值与业务补丁的区别,给出保持、设置、删除三态示例,并处理 ForceQuery、Fragment 和编码提示的边界。331 收藏 -
Go net/http.Server.MaxHeaderBytes 用来限制服务器解析请求头时读取的字节数,包含请求行但不限制请求体。本文说明零值默认值、显式配置、ReadHeaderTimeout 与 MaxBytesReader 的边界。299 收藏