Go语言技术文章
-
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 收藏 -
Go image.Rectangle.Canon 只能修正 Min/Max 的反向坐标,不能把零宽、零高或相交为空的矩形变成有效裁剪范围。本文用 Dx、Dy、Empty 和裁剪前检查定位问题。469 收藏 -
解释 text/template.Template.Clone 如何复制已解析模板的关联命名空间,以及为什么 Clone 后可以用 Funcs 替换副本函数、用 Parse 添加变体而不改动原模板。469 收藏 -
比较 Go new 表达式初值与取地址复合字面量,说明 Go 1.26 语言版本、指针元素类型、新变量与原变量身份的区别,并给出标量和结构体的可读性选择清单。469 收藏 -
Go slog.Attr 放入切片后,日志内容可能在延迟处理时读到修改后的值。本文区分引用值、标准 Handler 的同步输出、自定义 Handler 的延迟解析,以及切片和 Record 的快照边界。469 收藏 -
Go scanner.ErrorList.Err 会把空列表转换成真正的 nil 错误,非空列表则返回可继续处理的错误。本文说明 Err 与 Error 的差别、error 接口陷阱和诊断函数的推荐写法。469 收藏