Go教程技术文章
-
bytes.Buffer 的 Reset 会清空当前长度,但会保留底层存储。本文用 Len、Cap 和阈值策略说明如何复用正常大小的缓冲区,并隔离偶发的大容量缓冲区,避免复用池长期持有异常对象。235 收藏 -
Go Fuzz 可以把解析器的正常样例、空输入和历史失败语料放进种子集合,再用覆盖率引导生成新的字节输入。本文从 FuzzXxx、f.Add 和 f.Fuzz 写起,说明如何检查解析结果、运行限时模糊测试,并把失败输入保留为回归语料。485 收藏 -
Go 测试可以用 t.TempDir 管理临时目录,用 t.Cleanup 登记文件、服务和自定义资源的释放动作。本文从最小示例出发,说明清理时机、逆序执行、子测试边界和可复用辅助函数的写法。266 收藏 -
Go 的 t.Run 会形成带斜杠的测试层级,使用 go test -run 配合顶层测试名和子测试名即可只执行指定场景;本文还说明未锚定正则、精确匹配和常见误区。469 收藏 -
用 Go 标准库 debug/elf 打开 ELF 文件,遍历 File.Sections 读取节区名称、类型、偏移和大小,并说明 Section、Data、Open 之间的选择与特殊节区边界。267 收藏 -
Go查询参数应通过url.Values保存原始值并编码,再写入RawQuery。本文结合搜索链接说明已有参数、Set与Add、空值和重复编码,并区分查询编码、HTML转义与目标地址信任。143 收藏 -
Go 项目要同时支持 Linux、macOS 和 Windows 时,不要手写斜杠或反斜杠。本文用 filepath.Join、ToSlash、FromSlash 和 IsLocal 说明本地路径拼接、格式转换与输入边界的实用写法。145 收藏 -
用 encoding/binary 的 BigEndian 统一读写固定结构,说明结构体字段布局、binary.Read 与 binary.Write 的用法,以及短数据和字节序不一致时的处理边界。213 收藏 -
Go HTTP 服务端怎样把 gzip 放到响应边界、正确处理 Content-Encoding 和 Vary,并在流式输出时同时刷新 gzip.Writer 与 HTTP 输出层。352 收藏 -
用 Go archive/tar 和 filepath.WalkDir 打包目录,讲清 FileInfoHeader 保留文件模式、相对路径、符号链接与关闭顺序。391 收藏 -
Go ZIP指定文件读取可通过完整条目名精确匹配完成。本文给出限制解压后大小、拒绝重名并关闭两层资源的写法,说明读取错误、内存归档与完整性边界。479 收藏 -
用 Go embed.FS 把模板目录编译进二进制,再通过 html/template 的 ParseFS 读取渲染,适合希望单文件交付的 Go 服务。122 收藏 -
Go fs.WalkDir 传给回调的是逻辑路径和目录项,按文件名筛选时应先用 path.Base 取出最后一段,再用 path.Match 做完整匹配,并分别处理模式错误、访问错误和目录剪枝。486 收藏 -
Go 的 os.DirFS 可以把 fs.FS 的相对路径映射到指定目录,但它不是 chroot,也不会阻止目录内符号链接越出根目录。本文用 ReadFile、WalkDir 和 Go 1.24+ 的 os.OpenRoot 区分两种边界。348 收藏 -
encoding/xml 默认按 UTF-8 解析 XML。本文用 CharsetReader 按声明分派 GBK、Windows-1252 和 Shift_JIS 转换器,把输入接成 UTF-8 Reader,并区分未知字符集、转换失败、XML 语法错误和业务校验错误。102 收藏