Go教程技术文章
-
Go HTTP客户端分层超时需要区分网络环节上限、请求业务预算与客户端总超时。本文通过原创小响应示例说明配置方法、正文读取和资源关闭,并解释超时并存与常见误用。157 收藏 -
Go runtime/secret 可在受保护调用树结束时擦除寄存器和栈,并在相关堆对象不可达且被 GC 发现后擦除分配,从而缩短临时密钥出现在后续内存转储中的时间。本文给出最小用法、构建条件、平台边界与不能被它消除的副本风险。156 收藏 -
Go http.Request.Pattern 保存的是 ServeMux 实际匹配的路由模式。本文用 GET /orders/{id} 示例说明怎样读取 Pattern、怎样用 PathValue 取得变量值,以及直接调用 handler 和客户端请求导致空字符串的边界。156 收藏 -
Go 的 archive/tar 适合流式读取归档。本文区分 Header 与 payload,演示只保留文件头元数据、用固定缓冲区消费内容,并说明超大条目和异常归档的内存控制边界。155 收藏 -
用 Go testing.T.Run 把表格驱动测试组织成可读、可筛选的层级子测试,说明命名路径、嵌套分组、go test -run、t.Cleanup 与并行测试的边界。155 收藏 -
Go 的 encoding/csv.Reader 不会自动移除文件开头的 UTF-8 BOM,首个字段可能因此多出不可见字节。本文用流式包装只检查前三个字节,说明如何保留普通文件、处理短输入并继续使用字段数检查。154 收藏 -
Go flag 使用独立双短横线结束包装层选项解析,通过 Args 保留子命令参数。本文给出完整示例,说明普通参数提前终止、第二个分隔符、空参数与进程接口的处理边界。153 收藏 -
用一个小型 Go 任务队列说明 sync.Cond.Signal 与 Broadcast 的选择边界:单个资源变化唤醒一个等待者,全局条件变化广播全部等待者,并解释 Wait 为什么必须放在 for 循环里。152 收藏 -
本文围绕 Go csvutil 的 CSV 表头映射,说明如何用 csv 结构体标签把外部列名写入指定字段,并介绍自定义 Decoder.Tag、空值、未知列和表头差异等边界。152 收藏 -
Go Ristretto v2 通过 Config.Metrics 开启运行时指标,再从 cache.Metrics 读取 Hits、Misses 和 Ratio。本文用一组最小 Go 配方说明命中比例的公式、Wait 的可见性作用、Set 的异步语义与累计统计口径。150 收藏 -
OpenTelemetry Go 的 Span 到达顺序不等于调用顺序。本文从 HTTP 埋点、Context 传播和暂存配对三个层面说明,怎样让乱序遥测仍能还原服务调用关系。148 收藏 -
Go 接口非空却断言出空指针怎么办?区分空接口、类型匹配和具体指针非空,给出双返回值断言、返回端空值处理及反射的适用边界,避免把类型错误当成对象缺失。148 收藏 -
Go 的 url.Values 会在 Encode 阶段统一转义查询参数。本文从重复编码现象出发,说明如何保留原始值、处理已有查询、识别外部已编码输入,并区分查询参数与路径转义。147 收藏 -
Go database/sql 中 rows.Next 返回 false 不一定代表结果正常读完,也可能是驱动在迭代阶段返回了错误。本文用原创读取模板拆开 Query、Scan、Close 和 Rows.Err 的职责,并说明多结果集与写入型结果集的处理边界。146 收藏 -
Go 1.23 引入的 iter.Seq 让 slices.Chunk 可以惰性提供批次,slices.Collect 再把序列接收为可索引切片。本文说明空序列、尾批次和 slices.Clone 的数据所有权边界。144 收藏