Go语言技术文章
-
Go 流式响应遇到 Flusher 不支持时,应先区分写入成功与即时可见,再用 ResponseController 判断能力;遇到 ErrNotSupported 就安全降级为完整响应,并单独检查包装器、代理和测试环境。482 收藏 -
围绕 Go net/http 的连接升级,说明如何识别当前 ResponseWriter 是否支持 Hijacker,如何用 ResponseController 处理包装器与 HTTP/2 边界,以及接管成功后的连接管理责任。496 收藏 -
围绕 Go net/http 请求体上限,说明为什么不能直接 io.ReadAll,如何用 MaxBytesReader 在解析前限制正文,并识别 *http.MaxBytesError 返回 413。457 收藏 -
Go 里响应头超时通常由 Transport.ResponseHeaderTimeout 控制,而 Client.Timeout 是覆盖连接、重定向和响应体读取的总预算。本文用一组可复用配置和错误判断示例说明两者如何分工。256 收藏 -
net/http.Transport 的 IdleConnTimeout 过短时,空闲 keep-alive 连接会提前离开连接池,后续请求更容易重新建连。本文用 httptrace 区分连接复用与新建连接,并给出参数边界、排查顺序和调整方法。448 收藏 -
Go net/http.Request 的 GetBody 为空时,已经读取过的 POST Body 不能直接重试。本文说明 NewRequest 的自动填充条件,并用请求体工厂为每次重试创建新的 Request 和 Body。308 收藏 -
用一个出站 HTTP 调用拆开 Client.Timeout、Request Context 与 ResponseHeaderTimeout 的覆盖边界,帮助排查连接慢、响应头慢和响应体慢。311 收藏 -
Go 的 net/http.Client.CheckRedirect 返回 ErrUseLastResponse 时,不会继续请求 Location,而是返回最近响应且错误为 nil;本文说明如何读取并关闭响应体,以及它与普通重定向错误的区别。362 收藏 -
Go 的 debug/elf.File.SectionByType 按 SectionType 返回第一个匹配的 ELF 区段。本文从 elf.Open 开始,说明 nil 判断、区段元数据读取、多匹配遍历和不可信 ELF 输入的资源边界。226 收藏 -
plugin.Lookup 找不到导出符号时会返回原始错误。本文说明如何用 fmt.Errorf 的 %w 补充插件和符号上下文,同时把 Lookup 错误、符号类型断言错误和上层错误链分开处理。152 收藏 -
使用 Go os/exec 的 StdoutPipe 或 StderrPipe 时,Cmd.Wait 会在看到子进程退出后关闭管道,因此必须先消费完输出再 Wait。本文拆解单管道、双管道并发读取和替代 API 的选择。417 收藏 -
Go 的 unicode.IsPunct 按 Unicode 通用类别 P 判断 rune 是否为标点。本文说明为什么不能只判断 ASCII,给出逐字符过滤写法,并区分 IsPunct、IsPrint、IsSpace 和无效 UTF-8 的边界。124 收藏 -
Go 的 flag 包默认使用全局 CommandLine。本文用 NewFlagSet 拆出独立参数集合,说明 ContinueOnError 的错误返回、输出重定向和每个子命令独立解析的写法,避免重复注册和解析失败直接退出。448 收藏 -
遍历 database/sql.Rows 时,Next 返回 false 不代表一定成功。本文区分 Scan、Rows.Err 与 Rows.Close 的职责,说明自然遍历结束、提前停止和驱动关闭错误的处理顺序。241 收藏 -
Golang · Go教程 | 3天前 | 标准库 · 错误处理 · Go教程 · Go image/png image.Config png.DecodeConfig PNG尺寸 png.Decode
png.DecodeConfig 可以先返回 PNG 的颜色模型、宽度和高度,不创建完整 image.Image。本文说明如何用它做尺寸边界判断,再用可重复 Reader 调用 Decode,避免把配置读取和完整解码混在一起。369 收藏