Go语言技术文章
-
先打开一个可复用的 os.Root,再用相对路径调用 Root.OpenFile;文章说明返回文件句柄的使用方式,以及 Root 与 *os.File 的关闭边界。486 收藏 -
Go go/format.Node 可以把 ast.File、声明、语句或表达式节点写成 gofmt 风格的 Go 源码。本文从 FileSet 和 parser 开始,说明完整文件与局部节点的差异、注释处理以及 AST 或 Writer 出错时的处理方式。279 收藏 -
Go 1.27 工具链中的 waitgroupgo 更适合做 WaitGroup 代码现代化迁移。本文区分 go vet 检查与 go fix 差异预览,说明 Add、goroutine、Done 组合的修复顺序,以及闭包、错误处理、递归启动和旧工具链兼容边界。135 收藏 -
Go 的 io/fs.FileMode 同时携带文件类型位和权限位。本文从 FileInfo、DirEntry、IsDir、IsRegular、Type、Perm 几个入口说明如何区分目录、普通文件与符号链接等特殊类型,并补上遍历时的错误处理边界。259 收藏 -
Go 的 archive/tar.Writer.AddFS 可以直接接收 fs.FS,遍历目录树并保持相对路径写入 tar。本文用 os.DirFS 拆解归档根目录、AddFS、Close 和生产环境错误处理边界。303 收藏 -
Go stringsseq 适合把只遍历一次的 strings.Split 或 strings.Fields 迁移为 SplitSeq、FieldsSeq,减少临时切片分配。本文说明适用边界、go fix 预览方法、版本要求以及索引、重复遍历和语义回归检查。406 收藏 -
Go 1.27 的 go fix 新增 slicesbackward,可以把满足固定形状的倒序切片循环迁移为 slices.Backward。本文从输入边界、索引依赖、版本条件和预览方式说明何时适合使用。333 收藏 -
在 Go 静态分析中,类型别名不能只按 Named 类型处理。本文用 go/types.Alias.Rhs 读取 type A = R 的右侧类型,并说明 Alias、别名链与 types.Unalias 的边界。477 收藏 -
Go strings.SplitAfterSeq 返回一次性迭代器,适合按分隔符遍历并保留分隔符所在片段。本文从日志和协议文本的输入边界出发,说明尾部片段、空分隔符、无匹配和单次迭代的处理方式。226 收藏 -
Go fix embedlit 可简化嵌入字段初始化,本文说明语言版本、字段路径和已有嵌入值的输入边界,用源码计数区分可读性收益与性能结论。108 收藏 -
Go 1.27 的 go fix unsafefuncs 可以把可识别的 unsafe 指针算术迁移为 unsafe.Add 函数调用。本文说明怎样先用 -diff 预览,再检查字节偏移、对象边界、生命周期和旧工具链兼容性。314 收藏 -
Go 标准库 debug/macho.File.Section 可以按名称取得 Mach-O 节区。本文从打开文件、查找节区、读取元数据到选择 Data 或 Open 的完整流程,说明错误处理、资源关闭和输入边界。326 收藏 -
Go 1.27 的 go fix 增加 unsafefuncs modernizer,可把部分 unsafe.Pointer 与 uintptr 指针运算改写为 unsafe.Add。本文用代码对比说明迁移范围,并给出预览、复核和提交前检查清单。257 收藏 -
Go 标准库 encoding/base64 的 AppendEncode 可以把编码结果直接追加到已有字节切片。本文按完整工作流解释容量预留、返回切片、URL-safe 编码和多段追加的边界。295 收藏 -
Go net/url 的 URL.JoinPath 适合把已有 URL 与多个路径片段组合,并统一清理多余斜杠、. 和 ..。本文说明路径片段转义、查询参数保留和与 ResolveReference 的边界。225 收藏