Go教程技术文章
-
Go 可用 japanese.EUCJP Decoder 将日文历史文件转为 UTF-8。本文给出只读源文件、新建独立副本的流式实现,说明错误清理、替换字符与迁移记录的边界。128 收藏 -
Go 计算文件 SHA-512 摘要时,优先用 crypto/sha512.New 配合 io.Copy 流式读取,再将 64 字节结果编码成 128 位十六进制文本。本文给出完整实现、摘要比较方式和文件变化、空文件与算法选择的边界。128 收藏 -
用 Go atomic.Bool 管理批处理进程的运行状态,说明 Load、Store、CompareAndSwap 的使用边界,并给出复用状态对象、减少循环额外分配的写法。128 收藏 -
Go 1.24 提供了 os.Root。本文说明如何用 os.OpenRoot 建立目录边界,再通过 Root.Open 打开相对文件,并区分普通子路径、目录回退、越界路径和符号链接的处理方式。127 收藏 -
Go x/sync/errgroup.SetLimit 可以把活动 goroutine 数量限制在指定上限。本文从批量任务的实际场景出发,说明 SetLimit 与 Go、TryGo、WithContext 和 Wait 的配合方式,以及限制值、错误取消和任务提交时机的边界。127 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · 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 context.AfterFunc 取消清理与停止回调的区别,用 sync.Once 和完成信号处理空输入、并发收尾及错误合并,并说明适用限制。127 收藏 -
用 Go net/netip 判断 IP 是否属于 CIDR 网段,关键是处理解析错误、零值、地址族不一致、IPv4 映射地址和 IPv6 zone。127 收藏 -
从 TypeParam.Obj 取得声明对象,再用原 FileSet 将 Pos 转成文件名与行列。示例说明泛型参数定位、NoPos、行指令以及源码导航服务中的位置边界。127 收藏 -
用 Go Flock 区分 RLock/TryRLock 与 Lock/TryLock 的适用范围,覆盖只读快照、文件更新、非阻塞降级以及共享锁升级的跨平台风险。126 收藏 -
Go encoding/json/v2 默认拒绝重复成员名,可用 AllowDuplicateNames 明确严格或兼容策略。示例说明对象入口、空输入处理、局部结果隔离及旧数据导入边界。126 收藏 -
Cobra 的 Flags 只服务当前命令,PersistentFlags 会沿命令树传给后代。本文用参数作用域、命令继承和覆盖风险说明两者的选择。126 收藏 -
Go 用 os.OpenFile 追加日志时,应组合 O_WRONLY、O_CREATE 和 O_APPEND,理解 0o640 的创建权限边界,并分别处理打开、写入和关闭错误。本文给出可复用实现,同时说明 Seek、WriteAt、umask 与高并发日志场景的限制。126 收藏 -
Go text/template 的 FuncMap 用来把 Go 函数注入模板。本文从解析前注册开始,说明单返回值、值加 error、管道传参和同名替换的边界,并给出可直接改造的模板示例。125 收藏 -
slices.Compact 会在原有切片上合并连续重复元素并返回缩短后的切片。本文说明如何接住返回值、判断底层缓冲是否复用,以及指针元素和容量边界的处理方式。125 收藏