Go语言技术文章
-
Go strings.Cut 适合按第一次分隔符拆分字符串,并通过 found 区分未命中与合法空字段。本文用键值和协议片段说明三个返回值、重复分隔符、空输入以及与 Split、SplitN、CutLast 的选择边界。474 收藏 -
Go os.ReadDir(name) 会一次返回目录项;面对大目录时,可以打开目录并用 File.ReadDir(n) 分批读取。本文说明批量大小、DirEntry、io.EOF、Info 调用和 Close 错误的处理边界。474 收藏 -
Go encoding/xml 默认会丢弃无法映射到结构体的 XML 元素。本文用自定义 UnmarshalXML、Token 和 CopyToken 保存未知节点,并补上 MarshalXML 重新输出的完整做法与边界。473 收藏 -
Go os.CopyFS 遇到符号链接时不是读取链接目标,而是读取链接本身并在目标目录重建链接。本文区分缺少 fs.ReadLinkFS、目标已存在和系统权限三类失败原因。473 收藏 -
Go 的 github.com/pkg/sftp 中,File.Close 释放远程文件句柄,Client.Close 关闭 SFTP 会话;本文用资源层级、defer 和错误处理示例说明两者的区别与正确关闭顺序。473 收藏 -
Go gofpdf 输出中文 PDF 的关键不是给核心字体换个名字,而是准备覆盖中文的 UTF-8 TrueType 字体与 JSON 定义文件,设置字体目录后调用 AddUTF8Font 注册,再用 SetFont 输出。本文给出最小配置、文件边界和常见排查点。473 收藏 -
Zerolog 的 diode.Writer 为了让日志生产者不被慢速输出端阻塞,会把事件放入有容量的非阻塞队列;消费跟不上时,队列满的部分会被丢弃。本文解释丢失原因、missed 告警和关闭策略。472 收藏 -
Go database/sql 的 Result.RowsAffected 不是所有数据库驱动都支持。本文区分执行错误、可信影响行数、零行结果和驱动不支持,给出不误判、不重复执行的处理方式。471 收藏 -
go tool pprof 的 -http 参数可以显式指定 Web 界面的 host:port。本文用实际调试场景区分 profile 数据源与界面监听地址,并说明 127.0.0.1、0.0.0.0、固定端口和随机端口的取舍。471 收藏 -
Go 的 append 是否修改调用方,关键取决于切片共享的底层数组和剩余 cap。本文拆解 len、cap、返回值、三下标切片与复制边界。471 收藏 -
区分 Go debug/dwarf 中两个 SeekPC 的查询对象,按地址空间、DWARF 范围和返回地址偏移排查 ErrUnknownPC,并给出重复查询的索引方案。471 收藏 -
Quit执行SMTP协议退出,Close直接关闭连接。通过原创生命周期示例与两张结构图,说明Quit失败时的清理兜底、错误保留和邮件业务结果的区别。471 收藏 -
通过一个Go事件分类器区分go test -json的普通输出、框架文本与多行报错,保留包和测试归属,并说明CI应独立传递测试退出状态。470 收藏 -
Go 测试使用 t.Parallel 后,t.Setenv 修改的环境变量可能互相覆盖。本文解释两者的作用范围,给出参数化和串行边界两种稳定处理方式。469 收藏 -
Go compress/gzip 读取后 Header.Name 为空,不等于压缩数据明确记录了一个空文件名。本文从 FNAME 标志、Writer 写入条件和 Reader 解析行为说明如何区分可知信息与不可知信息,并给出稳妥的排障与设计方式。469 收藏