Go教程技术文章
-
Golang · Go教程 | 1天前 | sync · golang · 文件操作 · Close · os.File · 错误处理 数据持久化 文件落盘 Go os.File.Sync Go Close
Go 文件写入后为什么还要区分 Sync 和 Close?本文从 Write、Sync、Close 的调用链出发,说明落盘确认、defer 顺序与错误返回值该怎么处理。168 收藏 -
Go 1.22 引入的 slices.Concat 能按顺序合并多个切片。本文从空输入、容量增长和底层数组别名三个边界出发,给出可验证的使用方式和选择建议。165 收藏 -
用 Go strings.FieldsSeq 处理日志标签和空白分词,说明 iter.Seq[string] 如何被 for range 消费、空输入如何结束,以及何时仍应使用 strings.Fields 返回切片。164 收藏 -
用 Go embed.FS 嵌入模板时,直接把整个目录交给模板引擎容易扩大读取范围。本文从目录挂载、路径清理和上线验收三个环节,给出可复查的安全写法。161 收藏 -
Go 的 runtime.SetFinalizer 可以在对象不再可达时安排回调,但它不是文件、连接或临时目录的确定性关闭机制。本文用 runtime.KeepAlive、SetFinalizer 和显式 Close 对比验证可达性、回收时机与资源释放边界。161 收藏 -
Go 的 os.File.ReadAt 按固定偏移读取文件,不移动共享游标,但它对短读更严格:只要返回字节数少于缓冲区长度,就一定带非空错误。本文用可运行示例拆开 n、err、EOF 与循环读取的边界。160 收藏 -
Go 1.27 为 go fix 增加 atomictypes、embedlit、slicesbackward、unsafefuncs 四个 modernizer。本文用一套可回滚的检查流程说明如何先看改动,再决定是否接受自动改写。159 收藏 -
Go 1.21 引入的 maps.Clone 可以复制映射,但它只复制键和值本身,不会递归复制切片、指针等引用值;本文用可运行示例拆开浅拷贝、nil、空 map 和并发边界。158 收藏 -
Go 标准库的一次性双返回值初始化模式,适合把值和错误一起缓存,并让并发调用者共享同一份结果。本文从配置加载与文件读取场景出发,说明它的执行次数、错误传播、panic 行为和不适用边界。156 收藏 -
Golang · Go教程 | 2天前 | golang · 基准测试 · testing · 性能 · benchmark · 基准测试 Go Go 1.24 testing.B.Loop 性能验证
Go 1.24 引入 testing.B.Loop 后,基准函数不必再手动围绕 b.N 组织循环。本文用一个可运行的小实验说明循环边界、计时窗口、结果保活和旧写法迁移,并给出核对 ns/op 与自定义指标的检查方法。156 收藏 -
用一个可复现的 Go 示例拆清 sync.Pool 的复用边界、GC 后对象消失的原因,以及它和真正缓存之间的区别,最后给出可验证的使用清单。156 收藏 -
Go 的 flag.FlagSet 适合把 start、stop、config 等子命令拆成彼此独立的参数集合。本文从参数隔离开始,说明 ContinueOnError、Usage、Parse 和错误码如何组合,并给出可运行的最小命令行程序。150 收藏 -
用 Go os.DirFS 暴露静态资源或模板目录时,关键不是把绝对路径换成相对路径,而是确认 io/fs 的 ValidPath 约束、根目录语义和测试边界。本文用一个最小文件服务示例拆开这些判断。148 收藏 -
用 Go 标准库 netip.Prefix 判断 IP 是否属于网段,拆开 ParsePrefix、Masked、Contains 和 IPv4/IPv6 边界,给出可直接运行的校验代码。146 收藏 -
Go 1.24 新增的 crypto/rand.Text 适合生成密钥、令牌等随机文本。本文从 rand.Text 的内部调用链出发,说明 RFC 4648 Base32 字符集、固定长度、128 位随机性与错误处理边界。146 收藏