Go语言技术文章
-
用%w保留Go crypto/aes初始化错误,通过errors.As识别KeySizeError,区分调用阶段,并设计不泄露密钥的内部诊断和对外提示。164 收藏 -
Golang · Go教程 | 3天前 | 标准库 · Go教程 · Go io.Reader io.EOF compress/gzip Multistream gzip.Reader io.ByteReader
Go gzip.Reader 默认会把连续 gzip 成员当作一个逻辑数据流。本文说明怎样用 Multistream(false) 固定当前成员边界,利用 io.ByteReader 保留尾部数据,并区分当前成员 EOF、下一个 gzip 成员和普通尾部。127 收藏 -
用 Go 的 compress/flate 读取不带 zlib 或 gzip 外层封装的原始 DEFLATE 数据,讲清 NewReader、NewReaderDict、EOF、损坏输入和流复用的边界。180 收藏 -
用 Go 的 parser.ParseDir 按文件名筛选目录中的 .go 文件,按包名获取 AST 文件集合,并处理目录读取失败、语法错误和 build tags 不参与解析的边界。271 收藏 -
说明 Go comment.Heading.DefaultID 的锚点转换规则,解释中文和重复标题的碰撞,并用页面级映射统一目录链接与正文标题ID。335 收藏 -
Go 的 ast.CommentGroup.Text 面向文档文本,会去掉注释标记、整理空行,并过滤 //line、//go:noinline 等注释指令。本文对比 Comment.Text 与 Text 的职责,说明 ParseComments 的入口和源码工具中的选择方法。317 收藏 -
Go compress/flate.Writer 没有可直接填写的公开字段,可选行为要通过 NewWriter、NewWriterDict 的参数以及 Write、Flush、Close、Reset 的生命周期来表达。本文区分压缩级别、预置字典、流式刷新和 Writer 复用的职责,并给出错误处理与配置封装示例。229 收藏 -
介绍 Go scanner.ErrorList.RemoveMultiples 的排序和按行去重语义,说明如何保留完整原始诊断、生成一条一行的展示结果,以及无效位置和原地切片修改的边界。354 收藏 -
说明 Go ZIP 解析、条目打开与读取阶段的错误保留,用 %w 和 errors.Join 保留原因,给出内存归档示例,并解释校验和、关闭、容量限制及错误分类边界。434 收藏 -
说明 Go archive/tar.Writer 如何从 fs.FileInfo 生成 Header,保留文件模式与 ModTime,并在需要时用 FormatPAX 保存更细的时间信息。228 收藏 -
介绍 go/build/constraint.GoVersion 如何从构建表达式推导最低 Go 版本,解释与、或、非、空字符串和非 SAT 结构分析边界,并给出可复用的 Go 示例。488 收藏 -
围绕 Go archive/tar.Reader 的 tar.Header 可选字段,说明如何按 Typeflag 处理普通文件、目录、链接、PAXRecords 与 Xattrs,并安全消费当前条目数据。501 收藏 -
Go 1.17 后未转义分号不再按旧规则拆分查询参数。本文用 net/http.AllowQuerySemicolons 在 ParseForm 前包住 Handler,说明重复键、空值、编码分号以及代理解析不一致的边界。482 收藏 -
Go path.Match 面向正斜杠分隔的路径名,* 和 ? 不会跨过斜杠。本文用代码说明分段匹配、字符类、转义、完整匹配与 ErrBadPattern 的区别,并说明什么时候应改用 filepath.Match。418 收藏 -
用 Go net.IPNet.Contains 判断地址是否落在 IPv4 或 IPv6 子网中,说明 ParseCIDR、地址族、掩码长度和 nil 边界,给出可复用的白名单判断写法。135 收藏