Go教程技术文章
-
Go 1.24 及以上通过 http.Transport.Protocols 限定客户端使用 HTTP/1、HTTP/2 或明文 h2c,并用 Response.Proto 验证实际协商结果。410 收藏 -
Go 的 slices.SortStableFunc 会保留比较器判定为相等的元素在原切片中的相对顺序。本文用带 score 和 id 的记录演示比较器写法、稳定性测试、tie-breaker 的影响,以及原地排序和复制排序的选择。409 收藏 -
用 go test -benchmem 和 testing.B.ReportAllocs 读懂 B/op、allocs/op,再通过子基准、计时边界、逃逸分析与内存剖析定位 Go 基准中的临时对象来源。409 收藏 -
用 ~ 底层类型约束定义可参与运算的 Go 泛型函数,让 PriceCents、Meters 等自定义数值类型复用 Sum,并理解类型推断和混合参数的边界。408 收藏 -
Go os/exec 的 WaitDelay 不只是命令超时参数,它还限制子进程退出后遗留 I/O 管道的收尾等待。本文用 CommandContext、ErrWaitDelay 和输出管道示例说明配置方式与边界。408 收藏 -
复用 Go hash.Hash 时,Sum 只读取当前摘要而不会清空状态,独立消息必须在 Write 前明确 Reset。本文用错误与正确示例解释状态边界、Sum 的追加语义、sync.Pool 的独占借用原则,并给出可复现的 benchmark 方法判断复用是否值得。408 收藏 -
Go 读取 JPEG 宽高无需先解码像素:jpeg.DecodeConfig 会返回 ColorModel、Width 和 Height。本文用一次故障复盘讲清 Reader 消费、像素门禁与二次解码边界。408 收藏 -
用 archive/tar 解包时,先读取 Header.Mode 和 Typeflag,再按成员类型创建目录、写入文件并恢复权限,避免脚本或只读文件的模式丢失。408 收藏 -
讲清 Go net/http ServeContent 的 modtime 应该从哪里取、为什么不能用 time.Now,以及大文件下载中的 Last-Modified、条件请求和 Seek 边界。407 收藏 -
Go 的 maphash.Comparable 可以为满足 comparable 约束的值生成与 == 一致的进程内哈希。本文说明 Seed、碰撞处理和 ComparableHasher 的使用边界。407 收藏 -
Golang · Go教程 | 3星期前 | 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 bytes.Reader.ReadAt 用显式偏移读取数据而不改变当前位置,适合读取文件头、索引和多个独立区间。本文说明它与 Read、Seek 的边界、n 与 io.EOF 的判断方式,以及只读并发使用时的注意事项。403 收藏 -
pkg.go.dev API 使用 nextPageToken 续取分页结果。本文用 Go 演示如何保留原始查询参数、追加 token、处理空页与重复游标,并给出可恢复的请求循环。403 收藏 -
Go 批量任务不要只返回一个模糊错误:用结构化失败记录保留输入编号与阶段,再用 errors.Join 汇总整批失败状态,并通过 errors.Is、errors.As 支持分类判断和重试。403 收藏