Go语言技术文章
-
Golang · Go问答 | 18小时前 | net/http · Go问答 · host Go net/http httputil.ReverseProxy Rewrite ProxyRequest
Go httputil.ReverseProxy 改写请求时,真正要修改的是 ProxyRequest.Out。本文说明 SetURL、Out.Host、入站 Host 和 X-Forwarded-Host 的关系,并给出 Rewrite 的选择方法。400 收藏 -
Go 的 io.SectionReader 会把读取限制在指定区间内。本文说明越界短读的原因、Read 与 ReadAt 的偏移差异,以及如何用 ReadFull 和 n/err 处理固定长度与尾部数据。399 收藏 -
Go 1.27 的 jsontext.Decoder.ReadValue 在对象或数组结束标记处返回 SyntacticError,并不会推进读取状态。本文区分结束 Token、真正的 io.EOF 和语法错误,说明如何用 PeekKind 与 ReadToken 安全处理流式 JSON 边界。399 收藏 -
Go archive/zip 的 File.Open 返回解压后的条目内容并负责校验,File.OpenRaw 则返回 ZIP 内保存的原始压缩字节。本文比较两者的资源、错误和用途边界,演示如何安全导出原始数据。399 收藏 -
Go 的可选时间字段不要只靠一个特殊日期来猜。本文对比 time.Time 零值、*time.Time 的 nil 语义和显式 Valid 包装,说明它们在判断、JSON 编解码与持久化边界上的适用场景。399 收藏 -
url.ParseQuery 只负责把 URL 编码查询串解析成内存中的 url.Values,不会打开文件、连接或响应体。本文用错误返回值、资源拥有者和运行时指标拆分排查路径,定位真正未释放的请求体、响应体、文件、连接或 goroutine。399 收藏 -
Go 的 URL 转义不要只看函数名:路径段使用 PathEscape,查询参数交给 url.Values。本文用斜杠、加号和空格说明两者的边界,并给出可复用的往返处理流程。399 收藏 -
gofpdf 的 Cell 默认把当前位置移到右侧,MultiCell 输出多行后回到左边距并进入下一行。本文用坐标记录、CellFormat 和表格布局示例说明如何选择与排查。398 收藏 -
Go sonyflake 通过 Settings.StartTime 设置 ID 时间字段的坐标原点。本文给出 v2 的配置写法,并按起始时间、机器号、生成结果三层排查创建失败和取不到 ID 的原因。398 收藏 -
Go filepath.Split 会在最后一个操作系统路径分隔符后拆出目录和文件名,并保留目录部分的分隔符。本文用一个小程序说明常见输入、末尾分隔符、连续分隔符,以及它和 filepath.Dir、filepath.Base 的区别。398 收藏 -
Go httptrace.ClientTrace 可以在 GotConn 回调中记录连接是否复用。本文说明 Reused、WasIdle、IdleTime 的区别,以及同一个 http.Client、响应体关闭和 HTTP/2 场景下的排查边界。398 收藏 -
strconv.ParseInt 的错误不能只看 Error() 字符串。本文用 NumError、errors.Is 和参数边界区分语法错误、数值越界、非法进制与非法位宽,并给出适合接口输入的处理方式。398 收藏 -
Go ascii85.NewEncoder 可能暂存不足四字节的尾块。本文解释 Write 与 Close 的职责,给出完整编码示例,并说明错误处理、外层缓冲和消息边界。398 收藏 -
Go 的 path 包负责斜杠路径处理,不负责 URL 百分号转义。本文用一个批处理场景说明怎样只转义单个路径片段、避免路径层级被输入打乱,并减少重复组合带来的额外分配。398 收藏 -
跨语言二进制结构体经常因为 C 或 Python 的对齐填充导致 Go binary.Read 读错字段。本文用显式空白字段、固定字节序和完整错误处理,给出可移植的读取方式。397 收藏