Go语言技术文章
-
用固定前缀记录解析器说明 Peek 的 nil Reader、空输入、部分前缀、底层错误与正式消费,补充缓冲区不足、零长度请求和返回切片的使用期限。433 收藏 -
Go 的 http.ParseSetCookie 并不是遇到任何非法属性都返回 error。本文按首段 cookie、属性解析和 Cookie.Unparsed 三层拆开排查,给出可记录原始异常属性的诊断写法。433 收藏 -
Go strings.Builder 看起来不生效,通常不是 WriteString 失效,而是忘了调用 String、用值接收者复制了非零 Builder、Reset 后又读取空结果,或把 Builder 在多个 goroutine 间共享。本文按现象拆开排查并给出稳妥写法。433 收藏 -
Go tar 解包时不要直接把 Header.Name 拼到目标目录。本文用 filepath.IsLocal 拒绝绝对路径和父目录,说明 ErrInsecurePath、filepath.Join、目录项以及 Linkname 的边界,并给出可复用的安全解包骨架。432 收藏 -
Go 配置中的 500ms、2s 和 1m30s 不能按普通整数读取。本文用 time.ParseDuration 拆开格式边界、错误处理、负数与溢出问题,并给出启动阶段集中校验的写法。432 收藏 -
说明Go http.Protocols的三类协议开关,用独立服务端和客户端示例配置HTTP/1与TLS HTTP/2,并解释明文HTTP/2及代理连接边界。432 收藏 -
Go base64.Encoding.AppendDecode 会把解码结果追加到目标切片,输入非法时仍可能返回部分数据和错误。本文用前缀切片、CorruptInputError 与增量输入边界说明如何安全处理。432 收藏 -
围绕 Go encoding/hex.Decode 的 InvalidByteError,说明如何提取非法字节、计算输入位置、区分奇数长度 ErrLength,并封装成可读的解码诊断。432 收藏 -
Go 的 debug/elf.File.Section 用节区名称查找 ELF 中的单个 Section,找不到时返回 nil。本文从打开文件、按名称定位、读取元数据与内容几个环节说明 Data 和 Open 的区别,并补充 SHT_NOBITS 与压缩节区的边界。432 收藏 -
Go WaitGroup 出现 negative WaitGroup counter 通常是 Done 重复调用、Add 与 Wait 时序错误或批次复用不当。本文用最小示例、排查清单和安全写法定位计数失衡。432 收藏 -
errors.Join 本身会为非 nil 错误建立 joinError 和精确容量的错误切片。本文说明如何在调用方预分配并复用收集空间、把 Join 推迟到边界、避免循环内重复格式化,并区分可减少的临时分配与不可省略的聚合成本。432 收藏 -
Go io.ReadFull 用 n 和 err 表示固定长度读取是否完成:空读到 EOF、部分读取到 ErrUnexpectedEOF,以及底层读取错误需要分开处理。本文给出稳定的判别代码和协议头读取边界。432 收藏 -
围绕 Go slices.Collect 讲清 iter.Seq 到 []E 的收集方式、空输入的 nil 结果、浅拷贝边界和错误保留方案。432 收藏 -
mime.WordDecoder 遇到非内置字符集时,关键不是重写邮件头解析,而是让 CharsetReader 把指定字符集的字节 Reader 转成 UTF-8。本文从故障表现、回调输入到 Windows-1252 接入,说明 DecodeHeader 的错误边界与回归检查点。432 收藏 -
用 go/types.NewField 和 NewStruct 可以按字段顺序构造结构体类型;嵌入字段通过 embedded=true 表达,标签切片则按字段下标对应。本文给出带命名类型嵌入字段的完整示例,并说明读取字段、标签和后续类型检查的边界。432 收藏