Go问答技术文章
-
ServeMux 尾斜杠跳转的方法变化要结合实际状态码和客户端规则。用首跳诊断示例区分历史301与当前307,说明路径注册、正文重放和405排查。332 收藏 -
解释 Go x/text/encoding/unicode/utf32 中 ExpectBOM 与 IgnoreBOM 的解码、编码差异,给出缺失 BOM、字节序和 U+FEFF 输出的处理方法。332 收藏 -
Go embed 报 pattern 没有匹配文件,通常不是资源不存在,而是 pattern 相对目录、文件名大小写、扩展名或目录可见性与实际结构不一致。本文用最小示例拆解定位方法。330 收藏 -
Go WebSocket 处理器同时遇到 HTTP 错误响应、握手失败和连接写入失败时,最容易出现重复写响应或错误归因混乱。本文按升级前、升级中和升级后三个边界,说明 http.Hijacker、Upgrader 和 ResponseWriter 的处理顺序。330 收藏 -
GOTOOLCHAIN=auto 会结合 go.mod 或 go.work 的版本要求选择工具链。本文拆开 local、auto、path 与 name+auto/name+path 的边界,说明启动选择、依赖触发切换和排查命令。330 收藏 -
crypto/rand.Text 返回的不是任意字母数字串,而是基于 RFC 4648 Base32 的密码学安全文本。本文从官方实现拆开字符集合、长度与自定义字符表的边界。329 收藏 -
Go time.Parse 解析不带时区的字符串时会按 UTC 解释。本文从现象出发,说明何时使用 ParseInLocation、何时使用 In,并补充 IANA 时区、夏令时和错误处理的边界。329 收藏 -
Go Cron 同时设置日字段和星期字段时,不一定是两个条件都满足:robfig/cron/v3 在两者都为具体限制时按或匹配;使用 ? 留空其中一个字段,才适合表达只按日期或只按星期限制。329 收藏 -
Go genetlink 的 Family.ID 是当前连接按名称发现得到的运行时结果,不宜写成跨环境复用的固定数字。本文说明 GetFamily、Family.Version 与 Execute 的配合方式,以及重连和缓存时应守住的边界。329 收藏 -
Expr 中 7 / 3 与 7.0 / 3 的结果值和 Go 返回类型并不相同。本文说明整数文字量、浮点文字量、float()/int() 以及 AsFloat64/AsInt 的作用边界,帮助规则表达式稳定输出。328 收藏 -
Go Gonum 的 stat.Quantile 要求样本按升序排列,因为分位数本质上是在有序样本和累计权重上定位。本文说明排序契约、SortWeighted、权重对应关系以及 Empirical 与 LinInterp 的边界。328 收藏 -
Go 1.24 起可以通过 net/http.Protocols 明确控制 Server 接收的协议。本文用服务端配置示例说明如何让 HTTP/1 与未加密 HTTP/2 共存,解释 h2c 与 TLS HTTP/2 的差异,并给出回滚和排障要点。327 收藏 -
解释 Go x/text/secure/precis 的 OpaqueString 为什么面向 Unicode 口令字符串,而不是任意二进制秘密,并给出 Go 中的选型和错误处理方式。327 收藏 -
Go go-geom 中空几何没有坐标,零坐标点却是有效的 (0,0) 坐标。本文用 NewPointEmpty、NewPoint、Empty 和 GeometryCollection 说明两者差异,并给出导入与计算前的安全判定方式。327 收藏 -
Go slog.SetDefault 可以让 slog 顶层函数和标准 log 默认 Logger 共用同一个结构化 Handler。本文说明 JSONHandler 接入、SetLogLoggerLevel 的级别控制,以及独立 log.Logger 与 NewLogLogger 的边界。326 收藏