Go语言技术文章
-
Go 泛型类型推断失败时,先检查普通实参、类型约束和接口静态类型,再用最小范围的显式类型参数修复调用。382 收藏 -
Golang · Go问答 | 2星期前 | Go问答 · Go crypto/x509 RawSignatureAlgorithm SignatureAlgorithm UnknownSignatureAlgorithm 证书签名算法
Go crypto/x509 中 RawSignatureAlgorithm 保存的是 DER 编码的 AlgorithmIdentifier,不是可直接比较的算法名称。本文说明如何优先读取 SignatureAlgorithm,如何在未知或原始字段异常时解析 OID,并区分算法识别与签名验证。382 收藏 -
Go 中 TLS 证书链完整仍提示未知机构,通常是服务端链条与客户端信任根混淆,或 RootCAs 覆盖了系统根池。本文按错误类型说明公共 CA、私有 CA 和自定义 CertPool 的正确处理方式。382 收藏 -
Go netip.Prefix.String 返回 CIDR 文本,但 PrefixFrom 可能保留主机位。本文说明 String、Masked、IsValid 与 MarshalText 的边界和实用写法。382 收藏 -
Go t.Cleanup 会在测试及其子测试完成后执行清理函数,同一作用域遵循后注册先调用。本文用资源注册栈、父子测试边界和 defer 对照,说明如何预测释放顺序并安排资源依赖。382 收藏 -
Go 使用 golang.org/x/text/currency 的 Kind.Rounding 查询货币显示规则,理解 scale 与 increment 两个返回值,并据此区分标准、现金和会计场景的调用策略。382 收藏 -
Go Cron 关闭时不要只调用 Stop 就退出进程。Stop 会停止新的调度,并返回一个 Context;等待它的 Done 通道,才能等正在执行的任务结束。本文再补上退出超时和任务主动取消的边界。382 收藏 -
required_if 比较其他字段是否等于指定值,required_with 则在任一关联字段有值时触发必填。本文用生产请求结构体说明两者的触发条件、零值判断、多条件写法和发布检查边界。382 收藏 -
Go netip.Addr.Prev 返回当前 IP 之前的地址,并在地址空间边界返回零值。本文说明如何解析输入、区分 Addr{} 与 0.0.0.0/::、遍历 IPv4/IPv6 地址,以及处理带 zone 的 IPv6 地址。382 收藏 -
Go 1.24 同时提供 runtime.AddCleanup 和 os.Root。本文用一个可显式关闭的读取器,把文件名限制在指定根目录内,并说明 GC 清理兜底、KeepAlive、Stop 与错误处理边界。382 收藏 -
Go token.File.Lines 的返回切片应按只读数据使用。本文解释切片赋值与独立复制的区别,给出展示数据变换及 SetLines 输入隔离示例,说明源码分析任务中的所有权与并发约束。382 收藏 -
Go 的 Timer.Reset 不能只看方法名:NewTimer 与 AfterFunc 的返回值含义不同,Go 1.22 及更早还要处理旧通道值。本文用判断表和示例说明安全重置边界。382 收藏 -
自定义 slog.Handler 只在同步读取当前记录时可以直接使用 Record;一旦要把记录交给多个下游或异步保存,就应先调用 Record.Clone。本文说明共享状态边界、属性遍历方式和并发交接清单。381 收藏 -
Go 的 SetMemoryLimit 是 runtime/debug 中的软内存上限,不会自动限制 map 缓存。本文用运行时预算、缓存硬边界和淘汰指标三层策略,说明怎样减少无界缓存导致的内存压力,以及为什么上限不能盲目设低。381 收藏 -
Go fuzzing 可在回调入口用长度和字符规则筛选输入,再执行合法域性质断言。对比 return、Skip 和构造输入,并说明如何保留坏格式测试与控制成本。381 收藏