Go语言技术文章
-
Go 多账号 HTTP 调用要把每个登录身份绑定到独立的 cookiejar.Jar 和 http.Client。本文说明如何复用同一会话、共享 Transport、重置 CookieJar,并用安全的 Cookie 名称检查排查登录态串号。278 收藏 -
解释 Go runtime/cgo.Handle 删除后的有效性边界:C 端继续回传旧句柄时,Go 侧 Value 会触发 panic,并给出回调停止、所有权交接和重复释放的处理方式。345 收藏 -
用一个可复用的 Go HTTP 客户端设置 MaxConnsPerHost,区分总连接上限与空闲连接上限,并掌握按 host:port 判断和验收配置的方法。277 收藏 -
cgo 返回的 C 指针并非一律不能保存到 Go。本文区分 Go pointer 与 C pointer,说明 unsafe.Pointer 的持有边界、C.free 释放责任,以及 cgocheck 报错的排查方法。334 收藏 -
Go 的 http.NewRequest 不能只看 ContentLength=0 判断 body 是否为空。本文对比 nil、http.NoBody、空 bytes.Reader/strings.Reader 与自定义 Reader,说明 Request.Body、ContentLength、GetBody 的组合语义,并给出可直接复用的判断代码。478 收藏 -
Go 的 LookupHost 与 Resolver.LookupIP 都能查域名地址,但前者返回字符串且不接收地址族参数,后者通过 ip、ip4、ip6 显式筛选并返回 []IP。本文用同一组调用拆开结果差异、解析器环境和生产选型。176 收藏 -
Go 的 url.Values.Encode 会按 key 排序,重复 key 的值保持切片顺序;如果接口或签名要求自定义顺序,就要用有序 key 列表显式拼接。本文给出默认规则、编码边界和可复用写法。139 收藏 -
Go 的 net/url.JoinPath 会合并 URL 路径并清理重复斜杠、点段。本文说明包级函数与 URL.JoinPath 的选择、PathEscape 的路径段边界,以及尾斜杠和错误处理要点。180 收藏 -
Go TLS 按 IP 校验证书失败时,关键不是继续改 CommonName,而是读取证书的 IPAddresses SAN。本文用一段最小 Go 代码定位缺失、错配和校验输入问题。453 收藏 -
Go 的 gzip.Writer 会把 Header.ModTime 写进 gzip 头部 MTIME。固定 UTC 秒级时间,并在 Write、Flush 或 Close 之前设置,才能避免归档因当前时间变化而产生不稳定字节。211 收藏 -
Go TLS 中 InsecureSkipVerify 只影响客户端验证服务端证书链和主机名,服务端客户端证书校验应看 ClientAuth 与 ClientCAs。298 收藏 -
Go 遍历 tar 归档时,不要只看文件名后缀,而应读取 tar.Header.Typeflag。本文用一套最小遍历代码说明如何识别目录、符号链接和硬链接,并处理 Linkname、Read、io.EOF 及路径安全边界。481 收藏 -
Go 的 http.Hijacker 接管连接后,ResponseWriter 已退出标准 HTTP 响应路径。本文解释 HTTP/1.x、HTTP/2、包装器和 ErrHijacked 的边界,并给出切换到 net.Conn 与 bufio.ReadWriter 的写法。288 收藏 -
Go archive/zip.Reader.Open 读取嵌套目录时,路径要使用 ZIP 内部的斜杠分隔名;本文用完整示例说明目录判断、资源关闭和常见错误排查。120 收藏 -
Go ResponseWriter 的普通 Header 要在 WriteHeader 或 Write 之前设置;一旦响应头提交,后续修改通常不会生效。本文说明提交时点、分支写法和 Trailer 边界。170 收藏