Go语言技术文章
-
Go encoding/binary.Append 能把固定大小的数据按指定字节序追加到已有 []byte,并返回新的切片与错误。本文说明返回值、容量复用、ByteOrder 以及 AppendUvarint 的选择边界。418 收藏 -
Go encoding/csv 的 Reader.FieldPos 可以把最近一次 Read 返回的字段映射回原始 CSV 的行列位置。本文用多行引号字段说明调用时机、1-based 坐标、字节列号和常见误区。364 收藏 -
本文围绕 Go hash/maphash Seed 说明初始化、独立使用、多个 Hash 复用、并发边界与进程生命周期,帮助读者避开零 Seed、跨进程持久化和密码学误用。208 收藏 -
Go bytes.SplitSeq 返回 iter.Seq[[]byte],适合按分隔符逐段消费并在满足条件后提前停止。本文说明它与 bytes.Split 的差异、空分隔符和字节片段生命周期边界。462 收藏 -
Go 1.27 允许结构体字面量直接使用有效的 promoted field selector 初始化非指针嵌入字段。本文用最小示例说明版本、指针嵌入、字段遮蔽和混用键的边界。491 收藏 -
Go io.SectionReader.Outer 可以取回创建读取窗口时的底层 ReaderAt、起始偏移和长度。本文结合 Read、ReadAt、Seek 与 Size 说明它的职责边界和版本兼容取舍。429 收藏 -
Go 1.27 支持在方法声明中使用类型参数。本文从接收者、调用推导和接口限制三个边界说明 generic method 怎样复用类型参数,并给出适合工程代码的设计方式。393 收藏 -
Go regexp 默认采用 leftmost-first 规则,同一起点有多个候选时不一定选择最长结果。本文用 Regexp.Longest 说明 leftmost-longest 的差异、调用时机、并发边界,并比较它与 CompilePOSIX 的适用场景。444 收藏 -
Go 1.27 的 encoding/json/v2 默认拒绝 JSON 对象中的重复成员名。本文解释拒绝原因、严格解码写法,以及兼容历史数据时如何显式开启 AllowDuplicateNames。383 收藏 -
Go runtime/metrics 的直方图判断应看 Description.Kind,而不是猜测指标名称。本文说明如何从 All 建立描述符索引,安全读取 KindFloat64Histogram,并正确理解 Buckets 与 Counts 的关系。404 收藏 -
Go 的 os.Root 可以把文件访问限制在一个目录树内。本文从 os.OpenRoot 和 Root.Open 的最小写法出发,说明 ..、符号链接、Root.FS 与 OpenInRoot 的边界,避免把路径清理误当成安全限制。486 收藏 -
Go 1.27 可通过 tls.Config.CurvePreferences 显式加入 tls.MLKEM1024;列表是支持集合,不能替代双方能力协商。311 收藏 -
Go netip.Addr.Compare 不是按字符串比较 IP,而是先按地址位数,再按地址内容排序。本文说明混合 IPv4、IPv6、区域 IPv6 和无效零值的顺序,并给出可直接用于 slices.SortFunc 的写法。100 收藏 -
Go 的 os.Rename 只能在满足操作系统条件时直接移动文件。遇到跨文件系统失败,应把复制、同步、目标替换和源文件删除拆开处理。302 收藏 -
Go IPv6 优先连接等待需区分 DNS、双栈回退和请求后续阶段。通过 httptrace 记录连接事件,理解 FallbackDelay 与总拨号预算,并避免把强制 tcp4 当永久修复。364 收藏