Go教程技术文章
-
time.Timer.Reset 返回 false 不代表重置失败,它表示定时器在调用前已经到期或停止。本文按活动、到期、停止三种状态,说明 Go 1.23 及以上与旧版本的重新安排写法。446 收藏 -
Go go list 可以用模板或 JSON 输出包路径、目录、模块和依赖信息。文章从包列表、-deps、模板字段、结构化输出和模块模式几个边界出发,给出适合脚本与构建工具消费的稳定写法。446 收藏 -
Go context.Deadline 返回的是绝对时间,不是剩余时长;读取时必须检查 ok,并在调用下游前区分无期限、已过期和预算不足。本文给出提前失败、子任务预算与取消函数的防御式写法。446 收藏 -
用 sync/atomic.Pointer 原子发布完整的 Go 配置快照,说明 Store、Load、Swap 与 CompareAndSwap 的区别,以及为什么发布后不能原地修改配置对象。446 收藏 -
Go INI 默认会把同名键视为同一个 Key。本文用 ShadowLoad、ValueWithShadows 和 LoadOptions 说明怎样保留重复键的多个值,以及完全相同的重复值何时会被去重。446 收藏 -
maps.All 返回绑定原映射的惰性迭代器,并不会在创建时复制数据。本文从修改时点、迭代中变更和并发边界说明真实语义,并给出 maps.Clone 与有序快照写法。445 收藏 -
使用 Go groot 打开 ROOT 文件后,遍历 File.Keys() 列出对象键,并读取名称、类名、标题和 cycle。本文还说明对象键与对象内容的区别、Get 的使用边界,以及嵌套目录和异常文件的处理方式。445 收藏 -
Go tcell 程序退出时要把 Screen.Fini 绑定到初始化成功后的生命周期,让正常返回、Ctrl+C 和 panic 都经过清理出口;同时说明 os.Exit、SIGKILL 等不会执行 defer 的边界。444 收藏 -
Go接口如何限制请求体字节数?通过MaxBytesReader改造读取边界,区分413与400,说明JSON尾部、上传与回归用例的处理。444 收藏 -
Go 的 io/fs 使用统一的虚拟路径语法。本文说明 fs.ValidPath 如何拒绝空段、点段和首尾斜杠,怎样在 FS.Open 前接入校验,以及反斜杠、文件存在性和目录隔离的边界。444 收藏 -
Go 1.23 起可以直接用 os.CopyFS 把 fs.FS 的目录树复制到磁盘。本文从 os.DirFS 和 fs.Sub 的根路径开始,给出嵌入文件与本地目录示例,并排查已存在文件、路径和权限错误。444 收藏 -
用 Go Pond 的 NewGroup、SubmitErr 和 Wait 统一等待一批并发任务并收集错误,同时说明首个错误后的取消边界与 StopAndWait 收尾方式。444 收藏 -
用 os.DirFS 和 fs.WalkDir 固定文件系统边界,直接消费相对路径完成 Go 文件批处理,并说明路径转换、DirEntry、错误处理、排序和符号链接的性能边界。444 收藏 -
Go 1.23 引入的 os.CopyFS 可以把 embed.FS 等 fs.FS 资源复制到本地目录。本文用一个嵌入静态资源的场景说明调用方式,并梳理目录创建、既有文件冲突、符号链接和首个错误的处理边界。443 收藏 -
在 Go 中用 crypto/rand.Read 生成固定长度的加密安全随机字节,说明切片长度、十六进制与 Base64 编码、错误边界,以及它和 math/rand 的使用区别。443 收藏