Go语言技术文章
-
讲清 Go encoding/gob 接口字段为什么要注册具体实现类型,并用收发示例说明值、指针、注册名和解码边界。181 收藏 -
Go 的 ZIP 压缩包可能只有文件条目而没有对应目录条目。本文用 archive/zip 说明如何按 FileHeader.Name 识别显式目录,从文件路径补齐隐式目录,并处理 File.Open 的资源关闭与路径安全边界。181 收藏 -
t.TempDir 的清理时机绑定调用它的 testing.T:父测试创建的目录会保留到所有子测试完成,子测试创建的目录只保留到该子测试树结束。本文结合并行子测试说明安全共享、隔离和清理顺序。181 收藏 -
Go 请求设置 Context 超时后,客户端会先结束这次请求的等待,但连接池状态和服务端任务不一定同时消失。本文区分请求取消、Transport 连接复用、响应体关闭以及服务端 Context 传播,给出可执行的排查和处理方式。180 收藏 -
Golang · Go问答 | 3星期前 | 超时控制 · HTTP客户端 · Go问答 · context.WithTimeout http.Client.Timeout Go httptest.Server.Client Go HTTP测试超时 httptest慢请求
使用 Go httptest.Server 做接口测试时,可以保留 Server.Client 的测试连接配置,再在首次请求前设置 http.Client.Timeout;需要单请求预算时,用 context.WithTimeout 控制并检查超时错误。180 收藏 -
Go 的 net/url.JoinPath 会合并 URL 路径并清理重复斜杠、点段。本文说明包级函数与 URL.JoinPath 的选择、PathEscape 的路径段边界,以及尾斜杠和错误处理要点。180 收藏 -
Go t.Run 名称含斜杠时,-run 会把测试全名按斜杠分段匹配。本文用 HTTP/GET 案例说明分段正则、双斜杠空片段、默认不锚定与精确筛选的写法。180 收藏 -
Go constant.Value.ExactString 输出 1/10 并不是精度丢失,而是 go/constant 保留了小数常量的精确有理数表示。本文区分 String、ExactString、big.Rat 和 float64 的职责,说明如何选择正确的展示方式。180 收藏 -
slog.LogAttrs 直接接收类型化 Attr,可跳过 Log 的交替键值解析和通用参数转换;再配合 Logger.With、Enabled 与基准测试,可以减少热点日志中的重复工作和不必要分配。180 收藏 -
Go 客户端提示证书主机名不匹配时,证书可能仍在有效期内且签发链可信。本文拆解实际校验名、DNS/IP SAN、Common Name、通配符、SNI 与代理选证书,并给出安全诊断程序和固定 IP 拨号的正确配置。180 收藏 -
omitzero 只按 Go 零值或 IsZero 返回值省略字段。本文从标签逗号、nil 与空容器、自定义零值和 Marshal 方向定位未生效原因。180 收藏 -
slices.Collect 会把惰性 iter.Seq 完整物化为新切片,并从 nil 切片逐项 append。本文给出槽位、引用载荷与扩容峰值的估算方法,以及已知数量时用 AppendSeq 预分配、数量未知时限量或流式处理的写法。180 收藏 -
多个 Go 进程追加写同一个日志文件时,不要先 Seek 再 Write。本文从零实现一个 appendlog 小工具,讲清 O_APPEND 的正确用法、单次写入边界、关闭错误,以及什么时候必须增加锁或外部队列。179 收藏 -
sync.OnceValue 和 sync.OnceValues 只负责一次性初始化,不会把返回 error 当成自动重试信号。本文用最小示例说明错误缓存语义,并给出只缓存成功值的显式重试写法。179 收藏 -
从请求入口创建截止时间,沿 Go context 调用链传给服务层和下游阻塞操作,并说明局部子预算、取消传播、Err 判断与资源释放的实现边界。179 收藏