Go语言技术文章
-
Go 中 TLS 证书链完整仍提示未知机构,通常是服务端链条与客户端信任根混淆,或 RootCAs 覆盖了系统根池。本文按错误类型说明公共 CA、私有 CA 和自定义 CertPool 的正确处理方式。382 收藏 -
用 http.Transport.RegisterProtocol 把指定 URL scheme 路由到自定义 RoundTripper,并解释 http.ErrSkipAltProtocol 何时交回 Transport 的默认处理路径。256 收藏 -
围绕 Go net/http 的 Response.Body.Close、EOF、Transport 连接池和 HTTP/1.x 复用边界,整理响应体未完全读取时的排查与处理方案。436 收藏 -
Go io.CopyN 短输入通常返回 EOF,而非 ErrUnexpectedEOF。结合已写字节数和原始错误判断失败,理解部分写入、错误包装、重试与资源提交的边界。338 收藏 -
夏令时回拨会让同一个本地时钟读数出现两次。本文解释 Go time.Date 为什么不保证选择哪一次,并给出用显式 UTC 偏移消歧、保存和展示时间的实用写法。459 收藏 -
Go bufio.Reader.Peek 的请求长度超过缓冲区时,不会自动扩容,而是返回当前可用字节和 bufio.ErrBufferFull。本文按 n、Reader.Size、Buffered 与错误值拆开说明,并给出先检查固定长度头部、再读取完整内容的处理方式。354 收藏 -
Go math/rand/v2 的 ChaCha8 在同一份 [32]byte 种子和同一调用方式下可以复现原始 Uint64 序列;如果序列不同,优先排查种子字节、实例是否已被消费、Read 与 Uint64 是否交错,以及是否把 Rand 的派生方法误当成固定一步消费。481 收藏 -
Go RawURLEncoding 不接受等号,需按发送方选择 URLEncoding 或无填充配置。本文给出兼容函数、预期样本与基准方法,说明错误处理和适用边界。435 收藏 -
math/big.Int.SetString 解析失败时返回 nil,但接收对象的值是未定义的,可能继续显示旧值。本文解释返回值契约、base 参数和对象复用的安全写法。161 收藏 -
Go encoding/xml 遇到 XML 前缀从 p 变成 ns 后匹配失败时,应比较命名空间 URI 与本地名,而不是比较短前缀。本文用 xml.Name、XMLName 标签、DefaultSpace 和最小回归样例说明排查与修复边界。304 收藏 -
Go encoding/csv 遇到 CSV 字段数量不一致时,不必直接丢弃整条记录。本文用 FieldsPerRecord、ParseError 和 InputOffset 拆分正常行与坏行,保留可复查的错误位置。326 收藏 -
Go compress/gzip 读取后 Header.Name 为空,不等于压缩数据明确记录了一个空文件名。本文从 FNAME 标志、Writer 写入条件和 Reader 解析行为说明如何区分可知信息与不可知信息,并给出稳妥的排障与设计方式。469 收藏 -
使用 Go archive/tar 读取压缩归档时,当前条目读完的 io.EOF 与归档截断并不是一回事。本文解释 Header.Size、Reader.Read、Reader.Next 和 io.ErrUnexpectedEOF 的边界,并给出不吞错的读取写法。258 收藏 -
Go os.CopyFS 遇到符号链接时不是读取链接目标,而是读取链接本身并在目标目录重建链接。本文区分缺少 fs.ReadLinkFS、目标已存在和系统权限三类失败原因。473 收藏 -
OpenInRoot 的 dir 可采用可信绝对目录,name 应使用根内相对名称。本文说明从 os.Open 迁移时的参数变化,给出带关闭和大小限制的读取示例,并区分词法检查、符号链接与权限边界。333 收藏