Go问答技术文章
-
Go SetDeadline 设置的是连接上的绝对读写期限,不是只作用于下一次调用。本文说明总耗时与空闲超时的区别、方向 API 的选择、超时判断和并发复查方法。438 收藏 -
Go 处理 IPv6 host:port 时不能直接按冒号拆分,本文用 net.SplitHostPort 和 net.JoinHostPort 说明方括号、zone、端口边界及异常输入处理。219 收藏 -
Go 1.22 及以上可在 ServeMux 中注册命名通配符,并用 Request.PathValue 读取路径参数。本文区分单段参数与剩余路径,说明空值排查、转义边界和旧版兼容检查。499 收藏 -
Go 的 http.Cookie 设置成功后,浏览器是否发送主要由 Path 与请求 URL 的路径匹配决定。本文解释显式 Path、默认路径、排查顺序,以及删除 Cookie 时的配对规则。472 收藏 -
Go 的 FormValue 会把请求体与 URL 查询参数统一放入 Form,并按固定优先级返回第一个值。本文用一个重复参数示例说明来源、优先级与明确读取方式。446 收藏 -
Golang · Go问答 | 1个月前 | 网络编程 · HTTP · Go问答 · Go HTTP代理 http.Transport ProxyFromEnvironment HTTP_PROXY
Go 的 http.Get 并不是绕过环境配置直接联网:DefaultClient 会使用 DefaultTransport,而 DefaultTransport 默认把 Proxy 绑定到 ProxyFromEnvironment。本文沿着调用链解释 HTTP_PROXY、HTTPS_PROXY、NO_PROXY 和 localhost 的关系,并给出关闭或显式指定代理的写法。282 收藏 -
MaxIdleConnsPerHost 只限制单个 host 的空闲 keep-alive 连接;需要总连接上限时应使用 MaxConnsPerHost,并区分 HTTP/2 流与业务并发。103 收藏 -
Go 的 http.Response.Body 不是拿到响应头就结束了。本文解释为什么读到 EOF 再关闭有助于 HTTP/1.x 连接复用,以及大响应、未知长度和只关心状态码时如何选择。372 收藏 -
Go 的 http.Transport 可能自动请求并解压 gzip,导致 Response.Body 可直接读取明文,而 Content-Encoding 和 Content-Length 被移除。本文说明触发条件、验证方式以及如何保留原始压缩字节。156 收藏 -
Go 的 ResponseWriter 在第一次 Write 时可能已经隐式提交 200 OK。本文解释为什么正文之后再设置状态码无效,并给出错误分支、响应头和业务结果的稳定写法。250 收藏 -
Go 的 url.Parse 只验证输入能否解析成 URL 结构,不会验证 DNS、TCP、TLS 或 HTTP 服务。本文用分层检查和可超时的 net/http 示例区分解析成功与地址可达。388 收藏 -
Go 拼接 URL 时不要直接使用 filepath.Join:文件路径按操作系统规则处理,URL 需要保留 scheme、host、path、query 和编码边界。本文对比 filepath.Join、path.Join、url.JoinPath,并给出路径参数与查询参数的正确写法。387 收藏 -
Go encoding/csv 默认按首条记录校验后续列数,本文解释 ErrFieldCount 的原因,并给出固定列定位坏行、变长记录安全读取和字段策略选择方法。221 收藏 -
Go encoding/xml 遇到带命名空间前缀的标签时,匹配关键不是 soap、o 这样的前缀,而是命名空间 URI 与 Local 名。本文用结构体标签和 xml.Name 说明排查方法。428 收藏 -
Go 的 int 字段不能直接接收 JSON 字符串中的数字。固定返回 "123" 时使用 json:",string",同时兼容数字和字符串时用自定义 UnmarshalJSON 配合 strconv.ParseInt,并明确空值、小数和溢出策略。434 收藏