Go语言技术文章
-
Go bufio.Scanner 默认按行切分,但日志块、消息片段或自定义文本记录往往需要自己的分隔符。本文从 SplitFunc 的返回值契约出发,给出处理半条记录、EOF、空记录、超长 token 和扫描错误的完整写法。135 收藏 -
hash/maphash 没有 MakeHash,正确入口是 MakeSeed。本文区分 Seed、Hash 和 SetSeed,说明 String、Bytes 的选择、并发复用边界,以及为什么 Seed 不能跨进程持久化或用于密码学哈希。425 收藏 -
Go 的 go tool covdata merge 可以把多个 GOCOVERDIR 目录中的原生覆盖率数据合并到一个输出目录。本文说明输入目录、-i/-o 参数、合并后报告生成,以及元数据不一致时的排查边界。209 收藏 -
Go net/url.JoinPath 会合并并清理 URL 路径,但路径段应先用 PathEscape 处理。本文说明特殊字符、斜杠、点段、查询参数和 ResolveReference 的边界。400 收藏 -
Go encoding/binary.AppendByteOrder 提供了把整数追加到已有字节切片的接口。本文用 BigEndian、LittleEndian 和 NativeEndian 对比说明字段追加、缓冲区复用与跨平台协议的选择边界。393 收藏 -
处理代理地址、连接地址或地址键时,IPv4 与 IPv4-mapped IPv6 可能代表同一主机。本文用 net/netip.Addr.Unmap 说明如何识别映射地址、统一表示,并避开 Is4、BitLen 和 As4 的边界误用。219 收藏 -
Golang · Go教程 | 2天前 | 标准库 · csv · Go教程 · 数据导入 · 制表符 Go ReadAll read encoding/csv CSV读取 TSV Reader.Comma
Go encoding/csv.Reader 默认把逗号当作字段分隔符;读取 TSV 或制表符文本时,应在第一次 Read 或 ReadAll 前把 Comma 设置为 '\t'。本文说明有效分隔符约束、引号与空白边界,以及 Read 和 ReadAll 的错误处理方式。365 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 文件读取 · csv · Go教程 · 数据导入 · csv Go Reader encoding/csv FieldsPerRecord 变长记录
Go encoding/csv 默认会按首条记录固定字段数,遇到短记录或长记录时可能返回 ErrFieldCount。本文说明如何在读取前设置 FieldsPerRecord 为负值接受变长记录,并在业务层安全处理缺省字段,同时保留 CSV 语法错误和底层读取错误。289 收藏 -
Go reflect.Value.Interface不能直接转换通过不可导出字段取得的值。本文区分CanInterface、CanAddr和CanSet,给出顶层公开字段收集示例,并说明无效值、浅拷贝与输出敏感数据的边界。180 收藏 -
Go testing.T.TempDir 会在测试及其子测试结束后自动清理。本文用 T.ArtifactDir、-artifacts 和失败前复制说明怎样保留关键测试现场,同时避免把临时目录误当成长期产物。209 收藏 -
Go base64.Encoding.AppendDecode 会把解码结果追加到目标切片,输入非法时仍可能返回部分数据和错误。本文用前缀切片、CorruptInputError 与增量输入边界说明如何安全处理。432 收藏 -
Go 的 reflect.DeepEqual 对数字沿用 ==,所以 NaN 不等于自身;同一切片、map 或指针又可能因身份捷径返回 true。本文拆开反射语义、unsafe 位模式比较和可维护的 NaN 业务判断。348 收藏 -
Golang · Go问答 | 3天前 | 反射 · unsafe · 指针 · 垃圾回收 · Go问答 · Go 反射 垃圾回收 unsafe.Pointer uintptr runtime.KeepAlive Value.Pointer UnsafeAddr
Go 反射得到的 Pointer 或 UnsafeAddr 结果是 uintptr,不能像引用一样保活对象。本文区分立即转换、uintptr 暂存、runtime.KeepAlive 和低层调用参数四种场景,给出排查清单与安全边界。103 收藏 -
Go 反射修改字段时 CanSet 为 false,通常是值不可寻址、字段未导出或取错了 Value 层级。本文用一个小型反射检查器说明安全修复方式,并解释 unsafe 为什么不能直接把原 Value 变成可设置。463 收藏 -
本文解释 Go 泛型约束 comparable 的类型集合与设计边界,说明切片、map、函数和接口为何不能一概而论,并用泛型去重函数展示 Go 1.20 之后的约束满足规则与运行时风险。414 收藏