Go问答技术文章
-
本文用一个只依赖标准库的 Go 小工具说明 pem.Block.Headers 如何写入自定义头字段,解释 pem.Encode 的稳定输出、错误处理、Decode 回读与测试夹具设计。434 收藏 -
Go pem.Decode 找到 PEM 块后会返回结束标记之后的 rest;本文用前导空白、多个块和尾部文本说明消费边界,并给出可复用的循环读取写法。491 收藏 -
Go io.MultiReader 只有在当前 Reader 返回精确的 EOF 时才会切换到下一个输入;遇到非 EOF 错误会先把错误返回给调用方,不会自动跳过当前 Reader。本文用连续 Read 示例说明 n、err 和 Reader 切换之间的关系。431 收藏 -
Go strings.Reader 的 Read 会推进当前位置,而 ReadAt 按显式字节偏移读取且不会改变后续 Read 的位置。本文用 Len、Size 和短读错误说明两者的边界。351 收藏 -
Golang · Go问答 | 2天前 | 错误处理 · Go问答 · 流式解码 io.Reader CorruptInputError io.ErrUnexpectedEOF Go base64 base64.NewDecoder
base64.NewDecoder 是流式读取器,遇到截断输入时可能先返回已经完整解出的字节,再在后续读取中报告 io.ErrUnexpectedEOF。本文拆解 4 字符分组、n 与 err 的关系,以及如何避免把部分数据误当成完整结果。453 收藏 -
Go io.MultiWriter 按顺序把同一份数据写入多个 io.Writer;本文用可控 Writer 说明遇到错误、短写后是否继续写后续目标,以及日志和文件组合时的排序边界。191 收藏 -
Golang · Go问答 | 2天前 | 错误处理 · IO · Go问答 · 字节偏移 io.Seeker Go strings.Reader Reader.Seek ErrInvalidWhence
strings.Reader.Seek 的 whence 不是任意整数,只能使用 io.SeekStart、io.SeekCurrent 或 io.SeekEnd。本文用字节偏移示例区分 ErrInvalidWhence、负位置和超过末尾三种情况。449 收藏 -
Go 的 net.Resolver.LookupAddr 反向解析返回的是名称切片,遇到多个 PTR、部分结果、无记录或超时不能只判断一个字符串。本文用带超时的示例说明如何保留可用结果、分类处理错误,并把结果整理成稳定日志字段。155 收藏 -
用 Go 的 exec.Cmd.Environ 查看子进程实际配置的环境快照,理清 Dir、Env、PWD 和重复环境变量之间的覆盖关系,定位工作目录或环境变量不符合预期的问题。463 收藏 -
go list -json 会把普通源文件、同包测试文件和外部包测试文件放进不同字段。本文用 GoFiles、TestGoFiles、XTestGoFiles 的包名边界,说明代码生成器和测试收集器该怎样选择数组。336 收藏 -
用 go env -json 导出 Go 命令当前采用的有效编译环境,结合 -changed、指定字段和 Go 程序解析,适合 CI、部署排障与跨机器诊断。331 收藏 -
embed.FS.Open 接收的是 io/fs 规则下的逻辑相对路径,直接传入带 ..、绝对路径或反斜杠路径会失败。本文按故障时间线解释根因,并给出可复用的清理与边界处理方式。113 收藏 -
Go flag.FlagSet.Parse 遇到 -- 后会停止解析选项,后续参数通过 Args、Arg 和 NArg 读取。本文用最小示例解释位置参数被误判的原因,以及命令包装时如何安全透传参数。330 收藏 -
Go 的 flag.FlagSet.Visit 只遍历已经设置的命令行参数,适合生成启动日志和配置审计清单。本文用一个自定义 FlagSet 说明它与 VisitAll 的区别、排序规则和使用边界。225 收藏 -
Go database/sql 的 SetConnMaxIdleTime 看连接连续空闲多久,SetConnMaxLifetime 看连接从创建起活了多久。本文用时间线、配置示例和 DBStats 说明两者区别与组合方式。255 收藏