Go问答技术文章
-
Go types.TypeParam.Underlying 返回接口而不是 int 等具体类型,是因为类型参数的底层类型取自约束,而约束的底层类型总是接口。本文区分 TypeParam、Constraint、Underlying、类型集合与 TypeArgs,说明静态分析时怎样读取真正需要的信息。260 收藏 -
Go x/net/idna.ToASCII 不是简单的字符串转小写,而是原始 Punycode 编码入口。本文区分 ToASCII、Lookup.ToASCII 与 Registration.ToASCII 的用途,说明域名查找映射和注册校验应该怎样选择。259 收藏 -
database/sql 的 DB.Stats 同时提供连接池当前状态和累计关闭计数。本文说明 MaxLifetimeClosed 与 MaxIdleTimeClosed、MaxIdleClosed 的区别,并用两次采样差值定位连接寿命回收。259 收藏 -
Go embed 读取模板时报路径不存在,通常不是文件没打进二进制,而是 //go:embed 模式、FS 内部路径和 ParseFS 参数不在同一层级。本文用几个最小结构说明如何定位并修正。258 收藏 -
使用 Go archive/tar 读取压缩归档时,当前条目读完的 io.EOF 与归档截断并不是一回事。本文解释 Header.Size、Reader.Read、Reader.Next 和 io.ErrUnexpectedEOF 的边界,并给出不吞错的读取写法。258 收藏 -
Go 交叉编译时把 CGO_ENABLED 改成 1 还不够。本文按目标三元组、CC/CXX、头文件与 sysroot、pkg-config 和链接阶段给出一套工具链排查顺序。258 收藏 -
Go fuzz 测试持续扩大输入时,问题往往来自探索时间、失败输入最小化和共享状态副作用叠加。本文按故障复盘顺序拆分 -fuzztime、-fuzzminimizetime、seed corpus 与 target 隔离,给出可控且可复现的排查方案。257 收藏 -
Go HKDF 派生长度不足应先区分 Reader 与标准库定长接口,再检查字节单位及累计输出上限。本文给出定长读取和错误处理示例,解释输入参数、重复创建 Reader 与迁移时的结果分配差异。257 收藏 -
Go 1.25 的 runtime/trace.FlightRecorder 适合为长时间运行服务保留最近一段执行追踪。本文说明 MinAge、MaxBytes、WriteTo 和单次快照触发之间的关系。257 收藏 -
Go 的 encoding/csv.Reader 默认会把首条记录的字段数作为后续基准,遇到不等长行时返回 ErrFieldCount。本文用一个小型 CSV 清洗工具说明 FieldsPerRecord 的三种配置,并给出严格校验与宽松接收的处理方式。257 收藏 -
解释 Go x509.Certificate.CreateCRL 的签发证书、吊销条目、私钥和时间参数,并说明旧接口与 CreateRevocationList 的标准兼容边界。257 收藏 -
协议增加未知 ASN.1 字段时,使用 Go 的 asn1.RawValue 读取完整 TLV,正确区分 Bytes 与 FullBytes,并保留原始字节以便转发或重新编码。257 收藏 -
Go TLS 校验失败而浏览器正常时,重点核对拨号地址、ServerName、SNI 与证书 SAN 的关系,并区分主机名不匹配和信任链错误。256 收藏 -
用 http.Transport.RegisterProtocol 把指定 URL scheme 路由到自定义 RoundTripper,并解释 http.ErrSkipAltProtocol 何时交回 Transport 的默认处理路径。256 收藏 -
用逐行统计工具说明Scanner长行超限,区分初始缓冲、扫描预算与业务长度,处理Err和Bytes复用,并解释何时改用Reader分片。256 收藏