Go教程技术文章
-
Golang · Go教程 | 31分钟前 | 标准库 · 错误处理 · csv · Go教程 · Go CSV导入 encoding/csv csv.Reader FieldsPerRecord ErrFieldCount
Go csv.Reader 用 FieldsPerRecord=-1 可以接收列数不固定的记录;如果业务仍需识别异常列宽,则应保存每次 Read 返回的 record,并在固定列宽模式下同时保留 ErrFieldCount。本文区分字段数错误、部分解析错误和 io.EOF,给出可审计的导入循环。331 收藏 -
Go json.Decoder 解码到 any 时,JSON 数字默认会落到 float64。本文说明如何用 UseNumber 保留为 json.Number,再按业务边界解析成 int64 或 float64,避免大整数提前丢失精度。253 收藏 -
解释 embed.FS 与 io/fs 的逻辑路径规则,说明 Windows 也必须使用斜杠,并给出用 path.Join、ReadDir、Open 和 ReadFile 读取嵌入资源的跨平台写法。438 收藏 -
Go archive/zip 的 File.Open 返回解压后的条目内容并负责校验,File.OpenRaw 则返回 ZIP 内保存的原始压缩字节。本文比较两者的资源、错误和用途边界,演示如何安全导出原始数据。399 收藏 -
通过每次 Read 前后的 InputOffset 记录 CSV 输入消费范围,结合错误与输入版本回看原始字节,说明预读、多行字段、字节变换和失败后续传的边界。312 收藏 -
Go archive/tar 读取软链接时,Header.Name 是归档中的链接名,Header.Linkname 才是目标路径;TypeSymlink 没有普通文件数据体,Reader.Read 返回 EOF 不代表目标文件读取失败。167 收藏 -
Go archive/tar 默认可能把 ModTime 按秒写入;指定 FormatPAX 后,归档可以保留文件修改时间的亚秒部分。本文给出写入、读取核对和格式边界。188 收藏 -
Golang · Go教程 | 44分钟前 | 标准库 · 错误处理 · go · IO · Go 流式处理 io.Reader io.Pipe CloseWithError PipeWriter PipeReader
Go io.Pipe 不会自动把生产端的业务错误变成读取端错误。本文用 CloseWithError 传递原始 error,说明读取端如何先处理已有字节、再区分生产错误与 EOF,并整理成功、失败和提前关闭的关闭约定。213 收藏 -
解释 OffsetWriter 的起点映射、Write 与 WriteAt 游标差异、Seek 支持范围,给出局部写入示例,并明确它不提供写入长度上限及底层关闭责任。129 收藏 -
用 Go flag.TextVar 和 encoding.TextUnmarshaler 把命令行文本转换为自定义配置类型,演示 duration 解析、范围校验、默认值和错误处理。349 收藏 -
time.AfterFunc 的 Stop 返回 false 只说明定时器已经过期或停止,并不代表回调已经执行完。本文用 done 通知说明如何安全等待已启动的回调结束。317 收藏 -
slices.BinarySearchFunc 查不到值时,最先要检查的不是二分算法,而是比较函数是否按 func(E, T) int 返回“切片元素相对目标”的结果,以及切片是否按同一规则有序。本文用结构化切片说明方向、边界和插入位置。321 收藏 -
说明 time.Time.Round(0) 如何去掉单调时钟信息,区分 Equal、== 和 map 键规则,提供同源副本示例,并解释序列化、精度和 Location 一致性的边界。256 收藏 -
Go iter.Pull2 的第三个返回值 valid 才表示当前 pair 是否有效,错误可以作为第二个值正常传递。本文用一个带错误值的 Seq2 示例说明自然结束、错误值和 stop 清理之间的区别。259 收藏 -
讲清 Go slices.Chunk 的尾组长度、空输入、非法 n、容量裁剪和底层数组别名,给出适合批量消费的判断方法。387 收藏