Go教程技术文章
-
Go x/text/search 的 Pattern 适合把语言相关的查找规则编译一次后反复使用。本文从 CompileString 和 IndexString 入手,说明字节范围、未命中结果、Anchor、Backwards 以及并发复用时的边界。215 收藏 -
Go os.Chtimes 接收的是路径,但遇到符号链接时会沿路径找到目标文件并修改访问时间和修改时间。本文用 Stat、Lstat 和零值时间参数拆开观察层级,说明为什么链接自身的 ModTime 不会随调用变化。215 收藏 -
Go net/http.Client 减少临时分配的关键不是盲目复用所有对象,而是复用 Client 和 Transport、缩短编码缓冲生命周期、正确关闭响应体,并用 benchmem 确认收益。215 收藏 -
给 Go 结构体实现 MarshalJSON 后,如果方法内部再次对原类型调用 json.Marshal,就会重新命中同一个方法并形成递归。本文用别名类型隔离方法集,再通过匿名结构体合并默认字段与自定义字段,并说明指针接收者、错误返回和字段覆盖的边界。214 收藏 -
表驱动测试加上 t.Parallel 后,真正需要解决的是每个子测试的数据边界。本文从 t.Run、循环变量、局部副本和 Cleanup 的生命周期说明如何避免并行子测试互相污染。214 收藏 -
Go 模糊测试不是输入越大越好。本文用 testing.F 的 seed、前置过滤和 go test 运行参数,把输入长度、无效样本、最小化时间与总运行时间放进一套可控预算。214 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · JSON · Go教程 · encoding/json · Go encoding/json bytes.Buffer json.Compact JSON压缩
Go json.Compact 用已有 JSON 字节和 bytes.Buffer 生成紧凑 JSON,只删除结构中的无意义空白,不改动字符串值。本文说明最小用法、错误处理、Buffer 复用,以及它和 json.Indent、Marshal、HTMLEscape 的边界。214 收藏 -
用 Go 标准库 expvar 注册请求计数器并通过 /debug/vars 暴露 JSON 指标,覆盖独立 Handler、并发更新、重复注册和最小读取方式。214 收藏 -
Go 标准库 ServeMux 可以在路由模式中声明 {id} 等命名通配符,再用 Request.PathValue 读取。本文说明单段与尾通配符的区别、空字符串边界,以及直接测试处理器时如何用 SetPathValue 准备参数。213 收藏 -
用 encoding/binary 的 BigEndian 统一读写固定结构,说明结构体字段布局、binary.Read 与 binary.Write 的用法,以及短数据和字节序不一致时的处理边界。213 收藏 -
Go 1.27 为数据库驱动增加 RowsColumnScanner,让驱动可以按当前列直接写入用户目标。本文拆开 NextRow、ScanColumn、ScanContext 与旧版 Next 的职责,给出兼容实现骨架和接入边界。213 收藏 -
用Zap的两个Core和互斥等级条件,将Info、Warn写入app.log,Error及以上写入error.log。提供完整初始化代码,说明内部错误出口、文件同步关闭与轮转限制。213 收藏 -
Golang · Go教程 | 1星期前 | errgroup · 错误处理 · Context · 并发编程 · Go教程 · Go context 并发任务 errgroup WithContext
Go errgroup.WithContext 会在第一个任务返回非空错误时取消派生上下文,Wait 等待已启动的任务结束后返回第一个错误。本文用可取消的并发示例说明任务函数、结果通道、SetLimit 与退出顺序的写法。213 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · 错误处理 · go · IO · Go 流式处理 io.Reader io.Pipe CloseWithError PipeWriter PipeReader
Go io.Pipe 不会自动把生产端的业务错误变成读取端错误。本文用 CloseWithError 传递原始 error,说明读取端如何先处理已有字节、再区分生产错误与 EOF,并整理成功、失败和提前关闭的关闭约定。213 收藏 -
Go json.Encoder 默认会把 JSON 字符串中的 &, <, > 写成 Unicode 转义。本文说明 SetEscapeHTML(false) 的用法、HTML 安全边界,以及 Encoder、Marshal 和 HTMLEscape 的区别。213 收藏