Go语言技术文章
-
Go elf.ImportedSymbols 明确排除弱符号。本文用 DynamicSymbols、ST_BIND 与 SHN_UNDEF 提取未定义弱符号,并解释索引、错误和静态元数据边界。455 收藏 -
Go 读取 ZIP 条目大小时,应优先使用 archive/zip.FileHeader.UncompressedSize64。本文说明它与旧的 UncompressedSize 字段有什么关系,为什么 ZIP64 条目必须依赖 64 位字段,以及怎样在打开内容流前把原始大小用于配额、内存和解压边界判断。176 收藏 -
Go strings.Count 只统计不重叠匹配。本文用按字节起点推进的实现统计重叠子串,并说明空子串、UTF-8 与输入规模边界。253 收藏 -
Go strings.Builder 看起来不生效,通常不是 WriteString 失效,而是忘了调用 String、用值接收者复制了非零 Builder、Reset 后又读取空结果,或把 Builder 在多个 goroutine 间共享。本文按现象拆开排查并给出稳妥写法。433 收藏 -
Go 1.24 引入 os.Root,可把文件读写、创建和 fs.FS 访问限制在指定目录树内。本文用 OpenRoot、相对路径、Root.FS 和错误处理说明越界路径、符号链接、关闭责任及平台边界。278 收藏 -
strconv.ParseInt 只有 base=0 时按 Go 整数字面量规则允许下划线。本文比较前缀推断、显式进制、ErrSyntax 与 ErrRange,帮助固定配置输入契约。361 收藏 -
strconv.ParseInt 不返回空数值。本文解释语法错误、越界和零值的区别,用 Go 状态模型保留输入原文,并处理表单空态、错误提示与固定整数范围。200 收藏 -
Go sort.Search 只能在满足单调条件的资源快照中定位第一个可疑索引,不能代替 Close、Unlock 或连接池归还。本文用原创 Go 示例说明如何建立资源边界、处理 len(records) 返回值,并把定位结果交回资源所有者。487 收藏 -
Go sort.Search 返回的不是直接命中的布尔结果,而是有序范围内第一个满足谓词的位置。本文从单调谓词、升降序判断、len(data) 未命中和精确匹配四个边界排查“不生效”。495 收藏 -
Go io.CopyN 复制固定长度时,应同时比较 written 与 n,并用 errors.Is 区分源数据提前结束和其他 I/O 错误。本文给出返回契约、可复用判断函数及固定长度协议的处理边界。138 收藏 -
io.Pipe 是没有内部缓冲的同步内存管道,写端必须等读端消费数据。本文说明怎样安排并发读写、处理 EOF 与 ErrClosedPipe,并用 CloseWithError 把首个业务错误传到另一端。176 收藏 -
Go runtime.SetFinalizer 不生效时,先检查对象是否仍然可达、终结器是否通过闭包重新引用对象,以及是否把 GC 当成了确定的定时器。本文按迁移视角说明显式 Close、KeepAlive 和终结器兜底的正确边界。434 收藏 -
path.Match 不会打开或释放资源,它适合把资源名称筛成可疑集合。本文说明怎样设计 name 和 pattern,区分 matched=false 与 path.ErrBadPattern,再把命中结果交回文件、连接或任务的生命周期检查。426 收藏 -
Go path.Match 返回 false 时,先检查它是否要求整串匹配、通配符是否跨过斜杠、模式是否有语法错误,以及当前数据究竟是 URL 路径还是本地文件路径。472 收藏 -
Go path.Match 中的 ** 不是多级目录通配符,连续两个 * 仍然不能跨过斜杠。本文用最小示例拆开单层与多层路径的差异,并说明如何区分 false、ErrBadPattern 以及逐段匹配方案。304 收藏