Go教程技术文章
-
Go 1.23 的 iter.Seq 可以直接用于 range 函数。本文从 yield 的返回值出发,说明 break 怎样提前停止消费、迭代器怎样响应 false,以及自然结束、单次迭代和错误边界。106 收藏 -
Go text/template 自定义函数时,关键是先用 Funcs 注册,再让函数返回值或值加 error。本文用一个带业务校验的示例说明 Parse、Execute、errors.As 和部分输出边界。105 收藏 -
用 Go 的 signal.NotifyContext 把中断和终止信号接到根 context,统一驱动服务退出;本文说明 ctx.Done、defer stop、context.Cause 以及 SIGTERM、os.Kill 的边界。105 收藏 -
Go big.Rat 从字符串解析并保留精确计算值,用 RatString 无损保存、SetString 恢复;本文给出完整示例,说明格式限制、显示舍入与对象副本边界。105 收藏 -
Go 按指定时区查询某一天,需要用 time.Date 构造当天与次日的日期边界。本文结合日期筛选输入、完整 Go 示例和左闭右开判断,说明时区显示、夏令时、无效日期与重复午夜的适用限制。105 收藏 -
Go标准库flag可通过自定义Value累积同名参数。本文实现顺序保留的字符串切片类型,说明Set调用、零值String、FlagSet错误处理与参数终止边界。104 收藏 -
用 Go 1.24 的 os.OpenRoot 建立插件目录边界,通过 Root 方法和 Root.FS 读取相对文件,处理路径遍历、符号链接、资源关闭及挂载点等实际限制。104 收藏 -
用 bufio.Reader 按换行分块读取大文件,解释 ReadString、ReadBytes、ReadLine 的边界,处理跨缓冲区换行、末尾无换行和超长行。104 收藏 -
下游接口少量请求只是变慢而没有失败时,可以用 Go 的 net/http 与 context 为幂等读取请求增加受控副本:设置对冲延迟、共享总截止时间,首个成功后取消其余副本,同时限制额外流量。103 收藏 -
使用 afero.NewReadOnlyFs 把可写的 afero.Fs 包装成只读视图,明确读取、Stat、已存在目录与创建删除重命名等修改操作的边界,并给出可回滚的注入方式。103 收藏 -
使用 Go sync.OnceValue 缓存一次计算值,排查重复创建 getter、初始化阻塞与可变返回值共享问题,并说明 panic、零值和缓存生命周期的注意点。103 收藏 -
用 Go 1.27 的 goroutineleak profile 按创建栈聚合泄漏样本,结合 pprof top 与 list 定位阻塞源码,并说明 channel、sync 与 IO 场景的判断边界。102 收藏 -
Go csv.Reader 开启 ReuseRecord 后,Read 返回的记录切片可能复用上一轮的底层数组。本文用一个导入场景说明覆盖原因,并给出立即消费、复制保存和异步传递时的选择方法。102 收藏 -
Go 的 csv.Reader 默认会根据第一条记录检查后续列数。面对可选尾部字段或多版本 CSV,可把 FieldsPerRecord 设为 -1,再在业务层校验最少列、最大列和扩展字段,兼顾兼容性与数据质量。101 收藏 -
多模块仓库运行 go fix 时,关键是把 module 根目录和包模式分开确认。本文用 go list、go -C、-diff 和 git diff 组成一套只改指定模块的安全流程。101 收藏