Go教程技术文章
-
Go sonyflake 通过 Settings.StartTime 设置 ID 时间字段的坐标原点。本文给出 v2 的配置写法,并按起始时间、机器号、生成结果三层排查创建失败和取不到 ID 的原因。398 收藏 -
Go 1.21 引入的 slices.Sort、slices.SortFunc 和 slices.SortStableFunc 写法很像,但比较器语义、等值元素顺序和适用场景并不相同。本文用订单列表排序示例拆开三者的选择边界,并给出可复查的测试写法。397 收藏 -
Golang · Go教程 | 2个月前 | HTTP · 连接池 · Go教程 · 性能排查 · net/http · Go HTTP客户端 连接复用 Transport httptrace Response.Body
Go HTTP 客户端请求量上来后,如果 Response.Body 没有按路径读取并关闭,或每次请求都新建 Transport,连接池就很难稳定复用。本文从一个连接数异常的服务场景出发,用 httptrace 验收复用结果,并给出响应体、Transport 参数和回归检查的落地写法。397 收藏 -
用 Go 的 container/heap 实现一个按优先级领取任务的队列,说明 Less、Push、Pop、heap.Init、heap.Fix 的配合方式,以及指针接收者、索引同步和并发使用边界。397 收藏 -
Go compress/gzip 写入结束时要区分 Flush 与 Close:Flush 只推送待写压缩数据,Close 才会刷新剩余数据并写入 GZIP footer,且不会自动关闭底层文件或连接。397 收藏 -
Go archive/zip.File.Open 返回的是 io.ReadCloser。本文区分条目读取器与 ZIP 归档读取器的关闭责任,并给出单条函数、批量遍历和错误处理的安全写法。397 收藏 -
跨语言二进制结构体经常因为 C 或 Python 的对齐填充导致 Go binary.Read 读错字段。本文用显式空白字段、固定字节序和完整错误处理,给出可移植的读取方式。397 收藏 -
Go 解析 JSON 请求时,默认宽松解码、Decoder 严格校验和 RawMessage 扩展区分别适合什么场景?本文用原创示例说明未知字段、必填校验与接口演进的取舍。397 收藏 -
Go 的 JSON 接口经常有一组固定字段和一个随类型变化的 payload。本文用 json.RawMessage 保留可变字段,按类型延迟解析,并区分缺失、null、类型不匹配和整体语法错误。397 收藏 -
Go x509 的 SetFallbackRoots 用于系统根证书池不可用时的兜底配置。本文说明 CertPool 构造、显式 Roots 优先级、nil 与重复调用边界,以及 GODEBUG 排查方式。397 收藏 -
testing.T.Name 会返回当前测试或子测试的完整名称,嵌套 Run 使用斜杠连接层级,重复兄弟名称会自动追加序号。本文用表格驱动测试说明如何读取、记录和正确使用这个名称。397 收藏 -
Go bytes.FieldsFunc 接收一个 rune 判断函数,可把逗号、竖线、空白等混合字符当作分隔符,并返回不含空元素的字节子切片。本文说明自定义判断、UTF-8 语义、空结果和必要时的复制边界。397 收藏 -
Gonum 的 YenKShortestPaths 适合在非负权图中取得多条不含环的候选路径。本文从带权有向图构造、k 与 cost 参数、路径读取和边界处理几个方面说明如何使用。397 收藏 -
slices.DeleteFunc 会把匹配元素移除,但含指针的切片还要关注尾部槽位是否被清零。本文从 Go 版本行为、底层数组引用和 GC 验收三个角度给出可运行示例,说明什么时候需要关注内存保留以及如何用 cap、runtime.MemStats 和测试确认结果。396 收藏 -
用 Go sync.OnceValue 封装一次性初始化函数,理解并发调用、返回值缓存、panic 复现以及与 OnceValues、sync.Once 的选择边界。396 收藏