Go教程技术文章
-
用 Go runtime/metrics 读取 Float64Histogram,理解 Buckets 与 Counts 的对应关系,并用快照估算延迟分布的中位数和高分位边界。197 收藏 -
用 Go io.ReadFull 读取固定长度协议,区分 io.EOF 与 io.ErrUnexpectedEOF,并根据 n 和 err 做可靠的缓冲区验收。374 收藏 -
用 Go debug/buildinfo.ReadFile 读取已构建二进制中的主模块、依赖版本与版本控制信息,配合发布校验避免拿错构建产物。438 收藏 -
Go 的字符串按字节保存,同一个可见字符可能有预组合和组合字符两种 UTF-8 表示。本文用 golang.org/x/text/unicode/norm 判断 NFC、统一输入,并解释规范化前后的字节长度边界。263 收藏 -
Go 的 log/slog 可以把日志级别集中交给 HandlerOptions 管理,再用 LevelVar 在运行时切换,而 ReplaceAttr 适合统一字段格式。本文用一条可运行的配置链说明三者的职责边界、切换时机与验收方法。310 收藏 -
go/types.Info.FileVersions 可以告诉静态分析工具每个 ast.File 使用的 Go 语言版本。本文用一组可运行的类型检查代码说明文件版本、Config.GoVersion、Package.GoVersion 的关系,并处理版本缺失、类型错误和未来版本等边界。440 收藏 -
Go 的 container/heap 允许在队列元素优先级变化后用 heap.Fix 恢复堆序。本文从 heap.Interface 的索引维护出发,拆解 Fix、Remove 与 Pop 的边界,给出可运行的可变优先队列示例。467 收藏 -
用 Go 的 math/big.Int.FillBytes 把大整数写入固定长度的大端字节字段,理解绝对值、左侧补零和容量不足 panic 的边界,并给出可验证的协议字段校验写法。241 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 静态分析 · Go教程 · go/parser · go/ast · Go ast go/ast parser.SkipObjectResolution go/types
Go 的 parser.SkipObjectResolution 会跳过已经过时的语法级对象解析,减少解析阶段的 CPU 和内存开销。本文用 ParseFile、ast.File 和 go/types 的最小示例说明它保留什么、舍弃什么,以及何时必须补上类型检查。310 收藏 -
Go 的 html/template.URLQueryEscaper 适合把模板参数放进 URL 查询值,但它不是多值参数构造器。本文对照空格、加号、& 和 url.Values.Encode 的输出,给出可复核的写法与边界。441 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 类型安全 · Go教程 · database/sql · 数据库驱动 · 类型转换 数据库驱动 Go 1.27 database/sql.ConvertAssign Rows.Scan
Go 1.27 新增 database/sql.ConvertAssign,把 Rows.Scan 使用的常见值转换逻辑提供给数据库驱动。本文用一个驱动扫描场景拆开源值、目标指针、类型错误和 NULL 边界,说明如何复用转换规则而不把驱动实现写成一套私有规则。281 收藏 -
Go 1.23 的 slices.Chunk 可以把切片按批次遍历。本文比较手写下标循环、slices.Chunk 与复制切分的适用边界,重点说明子切片共享底层数组、容量被裁剪以及 n 参数的校验方式。418 收藏 -
用 Go 的 net/netip 解析 CIDR 配置并校验客户端地址,重点看 Prefix.Contains 的地址族边界、ParsePrefix 错误处理与 PrefixFrom 的掩码差异。250 收藏 -
Go 的 ServeMux 已经能按方法、主机和路径匹配请求,Request.Pattern 可以把最终命中的模式带进日志。本文用一个最小路由示例比较精确路径、通配符和方法匹配,并说明空 Pattern 的边界。452 收藏 -
用 filepath.WalkDir 编写一个目录清单工具,展示如何通过 DirEntry 判断目录并返回 SkipDir 剪枝,避免遍历缓存、构建产物等无关目录。158 收藏