Go教程技术文章
-
围绕 Go io/fs.ValidPath 讲清虚拟文件路径的有效边界、Windows 字符处理、FS.Open 契约与测试分层。380 收藏 -
Go 1.24 的 testing.T.Context 会在 Cleanup 回调执行前取消。本文用后台 worker 示例说明如何传递测试上下文、等待 goroutine 退出,以及父子测试、超时和清理阶段的生命周期边界。380 收藏 -
Go bytes.FieldsSeq 在 Go 1.24 起返回 iter.Seq[[]byte],按 unicode.IsSpace 规则遍历字段,不先创建承载全部结果的二维切片;本文从旧接口迁移、空白边界、切片生命周期和提前停止四个方面给出可直接使用的写法。380 收藏 -
用可选 Sender 示例解释 Go 接口为何会携带 nil 指针,区分接口比较、类型断言和对象可用性,并通过构造函数明确缺席时的 nil 返回约定。380 收藏 -
Go linkname 会改变对象文件符号绑定并绕过普通包封装。本文区分公开 API、握手式 linkname 和单方面拉取内部符号的风险,结合 Go 1.23 之后的链接器限制说明如何评估兼容性与维护成本。380 收藏 -
Go 标准库 uuid.NewV4 可以生成版本 4 UUID,再按下游类型选择 String、MarshalText 或 AppendText 转成文本。本文用一个最小请求 ID 项目说明三种出口、错误边界和接入检查点。380 收藏 -
Go hash/crc32 的 IEEE 与 Castagnoli 不是可以随意互换的参数。本文用 MakeTable、Checksum、New 和 Update 说明如何按协议兼容性选择多项式,并划清 CRC32 与加密摘要的边界。380 收藏 -
Go Zap 的 zap.Object 适合把一个自定义对象作为嵌套结构写入日志。本文从 ObjectMarshaler 和 zapcore.ObjectEncoder 的职责开始,给出请求元数据的原创实现,说明字段命名、错误返回、指针接收者和敏感信息边界。380 收藏 -
Go go-geom 可通过 Bounds 和 Min、Max 取得几何坐标包围盒。本文用二维折线演示空范围、有限坐标检查及多条折线合并,并说明布局与坐标系的区别。380 收藏 -
Go go-mp3通过NewDecoder包装输入,再用Read逐块取得PCM字节。本文给出原创同步消费函数,说明16位小端双声道格式、有效缓冲区、EOF处理、长度未知及输入文件关闭的边界。380 收藏 -
Go filepath.WalkDir 跳过目录应先判断目录类型,再直接返回 SkipDir。本文给出目录名和根相对路径两种排除写法,并说明文件过滤、根目录保留、读取错误、输出完整性和符号链接的处理边界。380 收藏 -
本文从一个带固定前缀的字节输入工具出发,演示 bytes.CutPrefix 如何识别前缀、保留 found 状态并组合成可复用的 Go 命令,同时说明空前缀、空输入和原始切片生命周期。380 收藏 -
本文围绕 Go atomic.Pointer 替换只读配置快照,解释首次 Load 为空、发布后修改内部数据和复制原子对象等问题,并给出构造后一次 Store 的迁移写法。380 收藏 -
Go encoding/csv.Writer 默认使用 LF 换行,UseCRLF=true 后每条记录改用 CRLF。本文说明它对 Windows CSV 兼容、字段解析、编码、缓冲刷新和错误处理的实际影响。380 收藏 -
Go embed.FS 不只适合把模板打进二进制,也可以通过版本目录和启动校验降低模板发布风险。本文演示如何保留可回滚版本、验证文件完整性,并明确热切换不该越过的边界。379 收藏