Go问答技术文章
-
Go CEL 求值时,unknown 表示输入尚未确定,运行错误表示当前表达式已经产生错误。本文用 Eval 返回值和 PartialVars 说明两者的处理边界。332 收藏 -
Go log/slog 中真正负责展开 LogValuer 的是 slog.Value.Resolve。本文说明 Attr、Value 与 LogValuer 的关系,讲清嵌套返回值、Group 不递归和递归保护边界,并给出自定义 Handler 的处理顺序。150 收藏 -
Go 1.27 的 encoding/json/v2 已移除实验期 format 标签选项。本文按标签参数形态、time.Time、time.Duration 和自定义类型说明迁移时应该怎么改。397 收藏 -
Go net/http 的 Response.Uncompressed 为 true 时,表示 Transport 已把服务器返回的压缩响应透明解压。本文说明触发条件、字段变化、最小判断代码,以及如何用 DisableCompression 保留原始压缩响应。113 收藏 -
Go http.Cookie.String 会根据字段组合 Cookie 或 Set-Cookie 文本,但非法 Name 会直接得到空字符串,非法 Domain 会被丢弃,Value 和 Path 中的非法字节会被清理。本文结合 Valid 说明怎样在发送前判断最终格式。232 收藏 -
Go log/slog 的 WithGroup 会为 Logger 的后续属性建立命名空间。本文用 TextHandler 与 JSONHandler 对比嵌套字段、说明空组行为,并给出子系统日志的组织方式。459 收藏 -
Go encoding/json/v2 中旧的 inline 标签为什么不生效?本文说明 Go 1.27 已改用 embed,并梳理可嵌入字段的类型、匿名字段和显式名称边界。212 收藏 -
Go regexp 默认采用 leftmost-first 规则,同一起点有多个候选时不一定选择最长结果。本文用 Regexp.Longest 说明 leftmost-longest 的差异、调用时机、并发边界,并比较它与 CompilePOSIX 的适用场景。444 收藏 -
Go 1.27 的 encoding/json/v2 默认拒绝 JSON 对象中的重复成员名。本文解释拒绝原因、严格解码写法,以及兼容历史数据时如何显式开启 AllowDuplicateNames。383 收藏 -
Go netip.Addr.Compare 不是按字符串比较 IP,而是先按地址位数,再按地址内容排序。本文说明混合 IPv4、IPv6、区域 IPv6 和无效零值的顺序,并给出可直接用于 slices.SortFunc 的写法。100 收藏 -
Go 的 os.Rename 只能在满足操作系统条件时直接移动文件。遇到跨文件系统失败,应把复制、同步、目标替换和源文件删除拆开处理。302 收藏 -
Go IPv6 优先连接等待需区分 DNS、双栈回退和请求后续阶段。通过 httptrace 记录连接事件,理解 FallbackDelay 与总拨号预算,并避免把强制 tcp4 当永久修复。364 收藏 -
Go 中 TLS 证书链完整仍提示未知机构,通常是服务端链条与客户端信任根混淆,或 RootCAs 覆盖了系统根池。本文按错误类型说明公共 CA、私有 CA 和自定义 CertPool 的正确处理方式。382 收藏 -
用 http.Transport.RegisterProtocol 把指定 URL scheme 路由到自定义 RoundTripper,并解释 http.ErrSkipAltProtocol 何时交回 Transport 的默认处理路径。256 收藏 -
围绕 Go net/http 的 Response.Body.Close、EOF、Transport 连接池和 HTTP/1.x 复用边界,整理响应体未完全读取时的排查与处理方案。436 收藏