Go语言技术文章
-
Go 请求变慢时,先把主机名解析和拿到 IP 后的连接分别计时,再用 net.Resolver 的 PreferGo 与 Dial 判断解析器路径,避免把 DNS 问题误判成 TCP 或业务代码问题。500 收藏 -
sync.Map 不是普通 map 的通用替代品。本文从高频覆盖写、固定值类型、多字段更新和 Range 遍历四个信号判断适用边界,并给出 Mutex、RWMutex 与组合方法的回滚方案。500 收藏 -
Go 反射遍历 map 时,MapIter.Value 会返回当前元素的 reflect.Value;Value.SetIterValue 可以在目标 Value 可设置且类型可赋值时直接接收当前值,避免额外构造一个 Value。本文给出复制循环、边界条件与回退清单。500 收藏 -
sync.OnceValue 会把初始化函数的返回值复用给后续调用,因此承载在返回值里的 error 也可能被持续复用。本文区分错误返回与 panic,给出显式重建 getter 和自定义可重试状态两种恢复策略,并说明并发交换与失败风暴边界。500 收藏 -
Golang · Go教程 | 3星期前 | Go教程 · 可观测性 · net/http · HTTP客户端 · 请求头注入 http.Client Go RoundTripper HTTP耗时 Transport中间件
本文用一个可复用的自定义 RoundTripper 统一注入调用方请求头,演示如何克隆请求避免污染原对象,并分别记录收到响应头与读完响应体的耗时,同时说明并发安全和响应体关闭边界。500 收藏 -
Go x/text/cases 的 NoLower 会关闭标题式大小写中非首字母的小写化,因此输入中的后续字母可以保留。本文对比默认 Title、NoLower、语言标签和 Caser 复用边界。499 收藏 -
Go encoding/base64 中,RawURLEncoding 同时使用 URL 安全字母表并省略等号填充。本文对比三种编码器,给出编码、解码和兼容带填充输入的写法,并说明跨语言互操作时的边界。499 收藏 -
以一个短帧解析器为例,按空输入、短头、合法帧和长度边界选择精简种子,使用 F.Add 与性质断言发现错误,并区分日常种子回归、有界 fuzz 探索和失败样本最小化。499 收藏 -
Go 泛型排序函数应使用 cmp.Ordered 表达可用的有序类型集合。本文从约束边界、命名类型、不可排序类型和浮点 NaN 语义入手,给出可复用写法与选型清单。499 收藏 -
Go使用NewReaderDict和约定的预置字典解压zlib输入。本文用有输出上限的完整示例说明ErrDictionary、读取校验、Close及输入重试位置,避免把部分结果误认为成功。499 收藏 -
Go encoding/csv 遇到列数不一致时,关键是先理解 FieldsPerRecord 的默认约束,再用 ErrFieldCount 与 ParseError 区分字段数问题和 CSV 语法问题。本文给出固定列、变长记录和兼容脏数据三种处理方式。499 收藏 -
Go 测试单独运行正常、并行运行却偶发失败,通常不是断言随机,而是环境变量、临时文件、全局配置或可变夹具被多个测试共享。本文按故障根因拆解 t.Parallel 的并发边界,并给出参数化配置、t.TempDir、串行环境变量和分组清理的隔离方案。499 收藏 -
整理 Go encoding/json v1、encoding/json/v2 对 JSON 重复字段的默认处理差异,说明严格拒绝、旧接口兼容和 DisallowUnknownFields 的边界。499 收藏 -
Go 的 hash.Hash32 与 hash.Hash64 仍通过公共 Hash 接口提供 Sum(b []byte) []byte,同时用 Sum32 和 Sum64 返回数值摘要。本文拆解接口分层、前缀追加语义和字节序选择。499 收藏 -
Go 使用 fs.Sub 创建子文件系统后,根目录文件应使用 "." 和相对路径访问。本文解释 ValidPath 规则、常见错误写法,以及如何区分路径无效与文件不存在。498 收藏