Go教程技术文章
-
用 iter.Seq2[int, error] 同时传出行号和校验错误,说明 range、yield、continue 与 break 的边界,以及 Go 1.23 语言版本要求。140 收藏 -
Go embed.FS 的 glob 目录要区分构建期与运行期://go:embed 模式必须匹配文件或非空目录,fs.Glob 的零匹配则应单独作为业务分支处理。本文给出稳定入口文件、隐藏文件规则和错误分层方案。140 收藏 -
Go 解析带引号换行的 CSV 字段时,不要先按换行符切分;使用 encoding/csv 的 Reader 按完整记录读取,再处理字段数和 ParseError。139 收藏 -
Go 的 url.Values.Encode 会按 key 排序,重复 key 的值保持切片顺序;如果接口或签名要求自定义顺序,就要用有序 key 列表显式拼接。本文给出默认规则、编码边界和可复用写法。139 收藏 -
用 Go io/fs 的 fs.Sub 把目录映射成独立的 FS 视图,配合 WalkDir 和 ReadFile 处理相对路径,并厘清非法路径、缺失目录与符号链接安全边界。139 收藏 -
Go 的 io.Copy 会优先尝试 WriterTo 和 ReaderFrom 快路径。本文用可复现的接口实现拆开选择顺序,并说明何时回退到缓冲复制。138 收藏 -
reflect.Value.IsZero 判断的是类型零值,time.Time.IsZero 判断的是零时间点。本文拆开值、指针和接口字段的反射入口,给出避免时间字段误判的写法与检查清单。138 收藏 -
讲清 Go slices.Delete 的区间边界、尾部引用清理、DeleteFunc、Clip 与 Clone 的差异,帮助在原地删除与释放过大底层数组之间做出合适选择。138 收藏 -
用 go generate 把源定义、生成器和重复 Go 代码连接起来,掌握指令格式、生成文件标记、执行检查与失败回滚。136 收藏 -
使用 archive/tar 解包时,先用 filepath.IsLocal 拒绝绝对路径和 .. 条目,再按 TypeDir 创建目录、按普通文件条目写入内容,保留 tar 原有目录结构。136 收藏 -
Go reflect 中 CanAddr 与 CanSet 不是一回事。本文用 ValueOf、Elem、结构体字段、切片元素和 map 索引拆解 Set panic,并给出可复查的安全写入方法。136 收藏 -
Go 的 omitempty 只能按编码规则省略部分空值。把它与指针字段组合,可以清楚区分字段缺省、显式 null、空字符串和数字零值,适合 PATCH 请求与可选响应字段设计。136 收藏 -
用 Go 的 io/fs.ReadDir 和 os.DirFS 按目录层级筛选文件,解释排序、DirEntry 判断、错误处理与大目录内存边界,并给出可运行示例。135 收藏 -
Go regexp.FindAllStringSubmatchIndex 返回的是按捕获组编号排列的字节下标对。本文用一个键值文本解析场景说明如何映射整体匹配、命名捕获组、未匹配分支和 UTF-8 边界。134 收藏 -
Go 上传接口要限制请求体,应该在 Handler 入口用 http.MaxBytesReader 包住 r.Body,再用 errors.As 识别 *http.MaxBytesError 并返回 413。本文还区分 Content-Length 预检查与 multipart 的 maxMemory。134 收藏