Go语言技术文章
-
Go xml.Decoder 返回解析错误时,可以用 InputOffset 取得当前输入流的字节偏移,再从原始 XML 截取附近窗口。本文说明偏移边界、Token 循环写法、字节切片安全处理和 Decode 场景下的注意点。474 收藏 -
runtime/metrics 结果为空时,先区分空的 Sample 切片、指标名称不在 All 中、Value.Kind 判断错误,以及直方图当前确实没有样本。本文给出一套可复用的读取与排查方式。474 收藏 -
用 Go 的 net/url.URL.ResolveReference 根据绝对 base URL 解析相对路径、根路径、查询和片段,重点说明目录尾斜杠、绝对引用和 JoinPath 的边界。474 收藏 -
Golang · Go问答 | 1天前 | 标准库 · Context · Go问答 · Go 优雅退出 context os/signal SIGTERM signal.NotifyContext os.Interrupt
把 Go 信号处理从 signal.Notify 和独立 channel 迁移到 signal.NotifyContext,用 Context 统一传播取消,并在任务结束后调用 stop 注销信号行为、释放关联资源。474 收藏 -
Go 的 plugin.Open 并不是所有平台都能使用。本文从支持范围、CGO 条件和 plugin: not implemented 出发,用接口隔离、build tag 与显式 fallback 设计一套兼容方案,并说明哪些加载错误不能被静默吞掉。474 收藏 -
Go HTTP 客户端拿到响应头后,resp.Body 仍由调用方负责读取和关闭。本文按只看状态码、读取正文、循环请求三种场景说明 Body 未关闭为何会降低 HTTP/1 连接复用,以及如何用最小改动修复。473 收藏 -
Go 的 hex.DecodeString 不会自动忽略十六进制字符串中的空格。本文用 strings.Fields 统一清理空白,再检查空输入、奇数长度和非法字符,并说明什么时候不应该静默删除分隔符。473 收藏 -
Go encoding/csv 读取 CSV 时遇到字段数量变化,通常是 FieldsPerRecord 的契约与实际文件不一致。本文区分严格定宽、首行定宽和允许变长三种模式,并给出带行号定位的处理方式。473 收藏 -
用 slices.AppendSeq 将有限迭代器追加到已有切片,保留前缀并接回返回值。通过原创示例说明追加顺序、nil 与空序列、容量复用、共享别名和复制边界,以及大规模结果的收集取舍。473 收藏 -
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 收藏 -
讲清 Go sync.Pool 复用可变对象时的 Get、Reset、使用与 Put 顺序,区分清空对象和清空池,说明容量、敏感字段、所有权与适用边界。473 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · 文件读取 · Go教程 · Go archive/zip bytes.Reader os.File io.ReaderAt zip.NewReader ZIP中央目录
Go 的 zip.NewReader 需要 io.ReaderAt 和整个 ZIP 的字节大小。本文解释 size 如何帮助定位文件末尾的中央目录,并分别给出 os.File、bytes.Reader 的正确写法,说明传读取长度、剩余长度和目录大小为什么会出错。473 收藏