Go语言技术文章
-
通过一个Go事件分类器区分go test -json的普通输出、框架文本与多行报错,保留包和测试归属,并说明CI应独立传递测试退出状态。470 收藏 -
Go 随机字节的标准base64输入可直接兼容真实CR/LF。本文给出带输入上限、32字节约束、错误丢弃和规范化输出的示例,说明Strict、空白字符、填充与认证边界。470 收藏 -
Go http.Cookie 的 RawExpires 只保存读取到的原始 Expires 文本,Expires 才是可用于时间判断和重新序列化的 time.Time。本文说明两者的关系、解析失败边界以及如何在代理和审计代码中正确使用。470 收藏 -
用 Go log/slog 包装一个自定义 Handler,把请求上下文中的 request_id、tenant_id 等字段自动加入结构化日志,同时保留 JSONHandler 的级别过滤、静态字段和分组能力。470 收藏 -
Go 重写 AST 节点后,原注释不会自动跟随新节点。本文用 ast.CommentMap.Update 说明旧节点注释迁移、新节点已有注释合并、Filter 回归检查等实用边界。470 收藏 -
Go slices.SortFunc 的多字段排序关键是让比较器按优先级、时间和名称逐层比较,并在每层不相等时立即返回。本文给出最小写法、降序字段处理、相等元素稳定性和比较器检查方法。469 收藏 -
Go 的 t.Run 会形成带斜杠的测试层级,使用 go test -run 配合顶层测试名和子测试名即可只执行指定场景;本文还说明未锚定正则、精确匹配和常见误区。469 收藏 -
Go 加上 -race 后变慢,主要来自访问插桩、同步关系跟踪和额外历史内存。本文说明如何固定 workload 比较性能,并用 GORACE 控制报告边界。469 收藏 -
Go 测试使用 t.Parallel 后,t.Setenv 修改的环境变量可能互相覆盖。本文解释两者的作用范围,给出参数化和串行边界两种稳定处理方式。469 收藏 -
Go compress/gzip 读取后 Header.Name 为空,不等于压缩数据明确记录了一个空文件名。本文从 FNAME 标志、Writer 写入条件和 Reader 解析行为说明如何区分可知信息与不可知信息,并给出稳妥的排障与设计方式。469 收藏 -
Go 中使用 sha256.New224 计算 SHA-224 摘要时,核心是通过 hash.Hash 分段写入数据,再读取 28 字节结果。本文说明流式写法、文件输入、Sum224 的选择,以及摘要长度和十六进制输出的排查方法。469 收藏 -
Go netip.Addr.Is4 直接判断 Addr 是否为原生 IPv4;IPv4 映射 IPv6 会返回 false,需要先用 Is4In6 识别,或用 Unmap 归一化后再判断。469 收藏 -
Go go-shp 中SHP与DBF按记录顺序对应,Shape返回的零基索引可直接用于ReadAttribute。本文演示关联读取,说明字段序号、筛选重排及配套文件混用的区别。469 收藏 -
Go roaring 计算压缩位图交集时,先区分 And 是否会修改接收者,再按需求选择 Clone+And、AndCardinality 或 Intersects。本文用用户集合示例说明结果、数量、真假三种输出的工程取舍。469 收藏 -
解释 Go errors.As 为什么常见写法是传入目标变量的地址,区分 *MyError、**MyError、接口目标、panic 与 false,并给出错误包装和自定义 As 的排查方法。469 收藏