Go问答技术文章
-
Go 1.24 为 crypto/x509 增加证书策略验证后,证书链能建立并不代表满足指定策略 OID。本文从版本、Policies 字段、CertificatePolicies、策略图和中间证书集合五个方面定位失败原因。329 收藏 -
Go slices.CompactFunc 会在压缩连续重复项后清零尾部元素。本文区分尾部引用与整个 backing array 的生命周期,给出直接接收返回值、Clone 脱离旧数组和 Clip 的使用边界。329 收藏 -
CGO_ENABLED=0 会让 cgo 构建约束失效。本文从环境确认、文件筛选到纯 Go 实现配对,说明如何定位“找不到实现”并稳定检查两条构建分支。329 收藏 -
Go pprof HTTP 地址打开为空时,先区分服务、路径和 mux 三层问题。本文从 net/http/pprof 的匿名导入讲起,说明 DefaultServeMux 与自建 ServeMux 的注册差异,并给出目录页、heap 和 CPU profile 的排查顺序。329 收藏 -
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 收藏 -
Go database/sql 驱动只有在连接已确认失效且操作不可能重复执行时才应返回 driver.ErrBadConn。本文解释 database/sql 的重试边界、驱动实现位置,以及业务代码为什么要保留结果不确定时的原始错误。329 收藏 -
io.MultiReader 会把多个 Reader 顺序拼成一条流,中间 Reader 的 EOF 会被内部消费,调用方只能看到最终 EOF。本文用包装 Reader 记录每个文件的结束事件和字节数,并说明错误处理、文件关闭与不应合并的场景。329 收藏 -
Go 业务超时应优先使用 time.Now 保留的单调时间语义,日志和跨服务协议则使用墙上时间或剩余 Duration。本文拆解校时影响、API 选择、序列化边界和 RPC deadline 的决策方法。328 收藏 -
从导入图、包级变量依赖和 init 三个层面排查 Go 服务启动时读到错误全局配置的问题,并给出更可维护的初始化清单。328 收藏 -
Go interface 比较时,动态类型相同但值不可比较就可能触发 comparable panic。本文拆解 slice、map、func 的边界,并给出类型收窄、字段比较和 reflect.Type.Comparable 保护方案。328 收藏 -
Expr 中 7 / 3 与 7.0 / 3 的结果值和 Go 返回类型并不相同。本文说明整数文字量、浮点文字量、float()/int() 以及 AsFloat64/AsInt 的作用边界,帮助规则表达式稳定输出。328 收藏 -
Go Gonum 的 stat.Quantile 要求样本按升序排列,因为分位数本质上是在有序样本和累计权重上定位。本文说明排序契约、SortWeighted、权重对应关系以及 Empirical 与 LinInterp 的边界。328 收藏