Go教程技术文章
-
使用 Go net/netip.ParseAddr 校验 IPv4、IPv6 和 IPv4-mapped IPv6,再用 Is4In6、Unmap 与 String 输出稳定的规范地址。407 收藏 -
讲清 Go net/http ServeContent 的 modtime 应该从哪里取、为什么不能用 time.Now,以及大文件下载中的 Last-Modified、条件请求和 Seek 边界。407 收藏 -
Go 的 maphash.Comparable 可以为满足 comparable 约束的值生成与 == 一致的进程内哈希。本文说明 Seed、碰撞处理和 ComparableHasher 的使用边界。407 收藏 -
Go 中需要把 []byte 交给异步任务、缓存或跨层接口时,bytes.Clone 可以复制有效数据并隔离底层数组。本文比较旧写法与新写法,并说明 nil、空切片、容量和回归测试的边界。407 收藏 -
Go time.Timer 的重置写法取决于通道语义:Go 1.23 及以后可直接 Reset,旧版则应先 Stop,并在返回 false 时用非阻塞接收排空潜在旧值。本文还说明 go.mod、GODEBUG、单一拥有者和 AfterFunc 的边界。407 收藏 -
用 bytes.Clone 复制 []byte 时,重点不是语法,而是确认结果与原切片不共享可写元素,并验证空输入的 nil 边界。406 收藏 -
Golang · Go教程 | 1个月前 | channel · 定时任务 · Go教程 · Go time.Ticker动态调整周期 Go Ticker Reset使用方法 Go定时任务保留状态 Go周期任务动态配置 Go ticker慢任务处理
Go time.Ticker可以通过Reset切换周期,但它只负责发送tick,不负责保存业务游标。本文用单goroutine事件循环拆开周期更新、状态保存、慢任务与退出清理,给出动态调度的可复用实现方式。406 收藏 -
maps.Collect 可把 iter.Seq2 的键值对收集到一个新 map 中;重复键会按迭代器产生顺序由后值覆盖前值。本文用记录切片演示重建去重字典,并给出首值保留、版本优先和冲突检测写法。406 收藏 -
Go json.Decoder 没有单次读取字节数设置。通过 LimitReader 的加一字节预算区分超限,检查尾随内容,并结合 MaxBytesReader 返回明确的HTTP错误。406 收藏 -
Go crypto/mlkem 用 ML-KEM-768 生成密钥、封装共享秘密与解封装密文。通过原创函数示例区分公开材料和秘密材料,解释错误处理、返回顺序及身份认证边界。406 收藏 -
Go stringsseq 适合把只遍历一次的 strings.Split 或 strings.Fields 迁移为 SplitSeq、FieldsSeq,减少临时切片分配。本文说明适用边界、go fix 预览方法、版本要求以及索引、重复遍历和语义回归检查。406 收藏 -
Go 1.25 将 testing/synctest 从实验特性带入标准库。本文用一个带重试退避的缓存刷新器,演示 synctest.Test、synctest.Wait 和虚拟时间的配合,说明它适合什么测试、哪些网络边界仍要另想办法。405 收藏 -
Go 1.27 改变了 Darwin 与 Windows 上 x509.SystemCertPool 对 SSL_CERT_FILE、SSL_CERT_DIR 的处理。本文按证书来源、TLS 配置、GODEBUG 回退和跨平台回归四个边界,说明旧项目该怎么排查。405 收藏 -
Go 1.26 为 runtime/metrics 增加了更细的调度指标。本文用一段紧凑的采样代码区分 runnable、waiting、running、GOMAXPROCS、运行时线程数与创建总量,说明哪些组合能提示排队或阻塞,哪些结论不能只靠一个数字得出。405 收藏 -
Go 处理 URL 参数中的无填充 base64 时,关键是按字母表和填充约定选择 RawURLEncoding,而不是把所有输入都交给 StdEncoding。本文给出判断表、解码代码和兼容排错方法。405 收藏