Go教程技术文章
-
Go 1.27 会在 ecdsa.PrivateKey.Sign 收到非空 SignerOpts 时核对哈希算法与摘要长度。文章说明新增检查、常见升级报错和签名适配器的审计方法。212 收藏 -
math/big.Int 的 Add、Mul 等方法会把结果写入接收器。复用同一个 *Int 可能让旧变量和新结果互相覆盖。本文说明指针别名的成因,演示用 new(big.Int).Set 创建独立副本,并给出缓存、序列化、并发和测试边界的处理方式。212 收藏 -
Go 的 http.Client 跟随重定向时,Authorization 并不是随机丢失。本文用重定向链、目标域名和 CheckRedirect 说明敏感请求头的转发边界,并给出可信目标允许、跨域停止和错误判断的写法。212 收藏 -
解释 Go fs.Glob 在 ReadDir 回退和 GlobFS 委托路径中如何处理 I/O 错误,并给出使用 WalkDir 保留底层错误、避免把读取失败误判为无匹配的完整写法。212 收藏 -
Golang · Go教程 | 1个月前 | JSON · 时间处理 · Go教程 · database/sql · 后端开发 · RFC3339 Go时间序列化 time.Duration JSON 数据库时间戳 sql.NullTime
用一个小型任务接口统一 Go 业务时间、Duration 与数据库可空时间戳,给出自定义 JSON 类型、仓储映射和往返测试。212 收藏 -
多租户服务若共享可变 x509.CertPool,容易把一个租户的私有 CA 扩散给其他租户。本文通过故障复盘给出独立根池、TLS 绑定、轮换与测试方案。212 收藏 -
Go bitset 提供 SymmetricDifference 与 InPlaceSymmetricDifference。本文用两组编号标记说明对称差、原地修改、结果遍历以及高编号稀疏数据的边界。212 收藏 -
Go csv.Reader.ReadAll 适合一次读取规模可控的 CSV。本文说明成功时的 nil 错误语义、io.EOF 边界、ParseError 定位方式,以及何时应改用逐条 Read。212 收藏 -
Go 1.21 引入的 clear 可以快速清空 map,但它解决的是元素清理,不是所有内存都立刻归还。本文用临时缓存场景拆解 clear、重新 make 和逐项删除的差别,再用基准与运行时指标确认容量复用是否真的适合当前代码。211 收藏 -
Go 长循环使用 time.Ticker 时,关键是把退出信号与 ticker.C 放进同一个 select,并在拥有 ticker 的函数退出路径调用 Stop;需要改周期时使用 Reset,同时用完成通知确认 goroutine 已结束。211 收藏 -
使用 Go embed.FS.ReadFile 读取内置资源时,不要只比较错误字符串。本文从 io/fs 的路径规则出发,演示如何用 errors.Is 判断资源不存在,再用 errors.As 读取 PathError 的操作名、路径和底层原因。211 收藏 -
Go 的 gzip.Writer 会把 Header.ModTime 写进 gzip 头部 MTIME。固定 UTC 秒级时间,并在 Write、Flush 或 Close 之前设置,才能避免归档因当前时间变化而产生不稳定字节。211 收藏 -
Go 的 cookiejar.Options 可通过 PublicSuffixList 限制 Cookie 的域作用范围。本文讲清 publicsuffix.List 接入方式、nil 配置风险、自定义接口约束与公网客户端实践。211 收藏 -
Ristretto v2 可以用 SetWithTTL 为每个缓存键设置独立过期时间,GetTTL 则能读取剩余 TTL 并区分未找到和永久缓存。本文从一个缓存同时保存短时与长时数据的场景出发,说明 Wait、返回值、容量淘汰和 TTL 到期之间的排查边界。211 收藏 -
比较大字节序列时,已有 []byte 就直接使用 bytes.Equal,不必先转换成 string。本文说明它的判断边界、与前缀和排序 API 的区别,以及性能和并发注意事项。211 收藏