Go语言技术文章
-
Go 的 QueryRow 不在调用处直接返回查询错误,真正的读取、类型转换和无行判断都要从 Scan 处理。本文用一个单行查询示例说明列映射、sql.ErrNoRows、NULL 字段和 QueryRowContext 的边界。199 收藏 -
Go filepath.Glob 无匹配时不会返回错误,真正需要区分的是空结果、ErrBadPattern 和目录范围问题。本文用可复用代码给出排查与封装方法。199 收藏 -
讲清 Go 字符串中无效 UTF-8 字节的识别与替换:ValidString、ToValidUTF8、RuneError 与 width=1 的区别,以及拒绝、替换、删除和保留证据的适用边界。199 收藏 -
用 Go archive/tar 的 Header.Typeflag 区分目录、普通文件、硬链接和符号链接,配合 Linkname、Size 与 WriteHeader 处理不同条目的数据边界。199 收藏 -
用 Go 1.23 的 iter.Seq2 为树形索引提供键值遍历时,可让 All 返回中序序列,并让递归 walker 把 yield=false 一路向上返回,从而支持 range break、保持封装且避免构造临时切片。199 收藏 -
Go 的 ResponseController.EnableFullDuplex 允许 HTTP/1 Handler 在请求体尚未结束时交错读取与写响应,但它并不 Hijack 底层连接。本文给出逐块读取、逐块确认的完整写法,并说明包装器、截止时间、HTTP/2 与代理缓冲边界。199 收藏 -
Go 1.20 引入 errors.Join 后,一个返回值可以同时携带多个错误。只要使用 errors.Is 检查哨兵错误,匹配仍会沿着多子错误树继续进行;关键是区分结构化匹配、文本展示和 nil 过滤。198 收藏 -
解释 Go select 多个通信同时就绪时为什么不能依赖 case 顺序,区分源码求值、伪随机选择、default 和显式优先级策略。198 收藏 -
从包级变量的依赖分析、声明顺序和 init 函数边界入手,给出用最小运行标记与 go/types.InitOrder 确认 Go 初始化先后的方法,并说明多文件与隐藏依赖的限制。198 收藏 -
Go json.Decoder 的 Token 会逐个返回 JSON token。本文用 json.Delim 和深度计数识别对象、数组的嵌套边界,并说明对象字段、数组元素、EOF 与畸形输入的处理节奏。198 收藏 -
Go 的 URL 查询参数同时存在原始字符串和解码后的值。本文用 net/url 拆开 RawQuery、Query 与 ParseQuery 的差异,处理重复键、加号、分号和异常百分号,并给出适合签名、缓存、审计和业务筛选的选择方式。198 收藏 -
Golang · Go教程 | 4星期前 | HTTP · 文件上传 · Go教程 · 错误排查 · 文件上传 Go multipart/form-data mime/multipart boundary
Go 的 mime/multipart 报错时,先检查 Content-Type 里的 boundary,再对照请求体分隔线、CRLF、结束标记和 ReadForm 限制。本文给出发送端与解析端的稳定写法和排查清单。197 收藏 -
Go encoding/csv 的 Reader.InputOffset 返回最近一条完整记录结束处的字节偏移。本文用可恢复的处理示例说明如何保存断点、校验文件并从安全边界继续读取。197 收藏 -
解释 Go net/http ResponseController.Flush 返回 ErrNotSupported 的原因,拆解 ResponseWriter 包装、Unwrap、FlushError 和代理缓冲边界。197 收藏 -
Go debug/dwarf.Reader.SkipChildren 只在不需要读取当前 Entry 后代时调用。本文用 Entry 树、Children 标记和 Tag 0 说明剪枝位置,并给出完整遍历与选择性遍历的判断表。197 收藏