Go教程技术文章
-
讲清 Go errors.As 如何穿过 %w 包装错误提取自定义类型,说明指针目标的正确写法、false 与 panic 的边界,以及错误链在业务工作流中的接入方式。263 收藏 -
Go context.AfterFunc 适合在上下文取消时触发连接、临时文件等资源的兜底回收,但 stop 只解除回调关联,不等待回调结束。本文用 stop、完成信号和 sync.Once 拆解正常完成与取消竞态。202 收藏 -
context.AfterFunc 的 stop 函数只负责阻止尚未启动的回调,不保证等待。本文用 sync.Once 和 done 通道封装主动 Close 与 Context 取消,避免资源清理重复执行。292 收藏 -
讲清 Go http.Request.Clone 复制请求并替换目标 URL 的正确写法,覆盖 Host、RequestURI、查询参数和 Body 重发边界。412 收藏 -
Go url.Values 的空值并不等于没有参数:空字符串会编码成 key=,空切片不会输出该键,重复值会按添加顺序展开。本文用 Encode 和 ParseQuery 对照说明三种状态,并给出 Set、Add、Del 的选择边界。209 收藏 -
Go net/url 处理重复查询参数时,应从 url.Values 的 []string 读取并用 Add 追加;本文说明 Get、Set、Encode 与 RawQuery 的顺序边界。415 收藏 -
Go 上传接口要限制请求体,应该在 Handler 入口用 http.MaxBytesReader 包住 r.Body,再用 errors.As 识别 *http.MaxBytesError 并返回 413。本文还区分 Content-Length 预检查与 multipart 的 maxMemory。134 收藏 -
Go http.Server 的优雅关闭超时不是 Server 的固定字段,而是传给 Shutdown 的 context 截止时间。本文用信号、5 秒预算和错误处理示例说明配置方式,以及 WebSocket 等劫持连接的边界。433 收藏 -
讲清 Go 1.22+ http.ServeMux 的父子树路由、方法匹配、具体性优先、通配符、405 与尾斜杠边界。270 收藏 -
用 Go encoding/xml 的结构体标签把重复 XML 子节点映射到切片,并处理嵌套路径、缺失节点与重复解码残留。279 收藏 -
讲清 Go csv.Writer 如何用 UseCRLF 固定 LF 或 CRLF 行尾,并在 Flush 后通过 Error 确认最后一批 CSV 数据已经交给底层 writer。145 收藏 -
Go 的 encoding/csv 可以把引号字段里的换行当作字段内容,而不是新记录。本文用 Reader.Read、FieldsPerRecord 和 ParseError 处理多行字段,并区分 EOF、字段数不一致与引号语法错误。203 收藏 -
通过业务层、bufio.Writer 缓冲层和底层 io.Writer 的分层记录,区分 Go 写入阶段错误与最终 Flush 错误,并给出第一次错误的收口方式。325 收藏 -
Go 中可以通过 Scanner.Split 注册自定义 SplitFunc,按 || 等多字节分隔符读取记录。关键是未遇到完整分隔符时等待数据、EOF 返回余量,并用 Buffer 处理记录长度上限。338 收藏 -
Go 中使用 bufio.Reader.Peek 查看协议头或下一行前缀而不推进读取位置,本文说明逐步探测、切片复制、长行和 ErrBufferFull 的处理边界。150 收藏