Go语言技术文章
-
Go strings.Fields 会把连续的 Unicode 空白视为一个分隔边界,丢弃首尾空白并返回非空字段。本文用原创示例说明空输入、制表符、换行和 strings.Split 的选择边界。249 收藏 -
Go 的 golang.org/x/image/font/sfnt 用 Parse 解析 TTF 或 OTF 字节,再通过 Font.Name 和 NameIDFamily、NameIDSubfamily、NameIDFull 读取字体名称。本文说明名称缺失、底层数据生命周期以及 Parse 与 ParseReaderAt 的选择边界。249 收藏 -
Pond 不设置 WithQueueSize 时使用默认无界任务队列,而 WithQueueSize(0) 会完全禁用队列。本文说明两者在任务积压、提交阻塞、TrySubmit 和 WithNonBlocking(true) 下的差异,并给出选择建议。249 收藏 -
解释 Go Flock 为什么不应在持锁期间删除锁文件:锁依附于已打开的文件对象,删除路径后后续进程可能打开新对象,从而绕过原来的互斥;文中给出安全释放和清理建议。249 收藏 -
gofpdf 调用 AddUTF8Font 成功后仍可能缺字。本文按字体目录、家族样式、字符覆盖和 UTF8CutFont 子集四层排查,并给出可复用的 Go 检查顺序。249 收藏 -
Go 的 slices.Values 可以把已有切片适配成 iter.Seq,让代码直接用 range 逐项消费。本文说明它的顺序、空切片、自定义切片类型和底层数据边界,并比较 Values、Clone 与 Collect 的使用选择。249 收藏 -
Go bufio.Reader.Reset 会丢弃已有缓冲、重置读取状态并切换到底层 io.Reader,适合在批量处理多段输入时复用 Reader 对象。本文用字符串和文件场景说明复用方式、资源关闭责任、零值初始化、自身 Reset 以及旧缓冲数据的边界。249 收藏 -
Go 子测试名称里的斜杠会参与分段匹配。本文用原创路由测试说明 -run 的逐段正则、空中间段、锚点与父测试执行规则,并给出名称回滚和叶子用例确认方法。249 收藏 -
Go encoding/csv 的 Reader.ReuseRecord 可以减少逐行读取时的分配,但后续 Read 可能复用上一条 record 的底层数组。本文按生命周期说明什么时候可以直接处理,什么时候必须复制整行或字段,避免保存结果后被下一行覆盖。249 收藏 -
区分 Go 文件 Write、File.Sync 与 Close 的职责,掌握关键文件写入时的持久化和错误处理顺序。248 收藏 -
用 Go io.TeeReader 可以在读取文件、请求体或消息流时同步写入 hash.Hash,边读边计算 SHA-256 而不必先缓存完整输入。本文说明完整消费、摘要结果和写入错误之间的关系,并比较 TeeReader、MultiWriter 与 io.ReadAll 的适用场景。248 收藏 -
Go pprof CPU profile 看不到业务函数时,先区分采样窗口没有业务热点,还是 profile 与分析端二进制没有正确配对。本文给出精确二进制、本地符号化、构建裁剪和复采样的排查路径。248 收藏 -
通过MultipartReader逐部件接收单文件,用实际读取限额、文件上限、固定复制缓冲及并发准入控制资源。原创示例说明私有暂存、失败清理与成功交付的责任边界,避免把复制缓冲大小误当成进程内存上限。248 收藏 -
Go testing.T.Output 返回一个适合多行诊断的 io.Writer,但不会自动补换行。本文说明并发写入如何按记录同步、行缓冲何时刷新,以及测试函数和父测试结束后为何不能继续 Write。248 收藏 -
Go Hamba Avro 的可空联合适合用 *T 表达 null 与具体类型二选一;当联合包含多个业务分支时,再用指针接收者实现 UnionConverter,显式控制 ToAny、FromAny 和错误处理。248 收藏