Go教程技术文章
-
io.LimitedReader 用 N 限制读取量,但读满上限不等于底层输入结束。本文用剩余字节、EOF 与下一次读取拆开判断,给出处理固定长度帧和保留尾部数据的 Go 写法。363 收藏 -
Golang · Go教程 | 3天前 | 标准库 · go · 性能监控 · GC · runtime/metrics · 运行时指标 Go runtime/metrics GC周期 Float64Histogram
Go runtime/metrics 可以直接读取运行时导出的 GC 周期、堆对象和暂停时间指标,但采样时不能把累计计数当成单次耗时,也不能忽略指标类型。本文用采样器拆解 /gc/cycles/total:gc-cycles、/gc/pauses:seconds 与 Float64Histogram 的读取、换算和验收边界。362 收藏 -
bufio.Scanner 默认缓冲区遇到超长日志行会返回 ErrTooLong。本文用可复现的日志读取场景说明如何设置 Buffer、何时改用 bufio.Reader,以及怎样验证内存和错误边界。361 收藏 -
bufio.Writer.Flush 遇到底层 Writer 短写时,会把未写完的数据留在缓冲区并记住错误。本文用可控的 io.Writer 演示状态变化、错误传播和安全恢复边界。361 收藏 -
Go 结构体嵌入让外层类型获得更短的字段和方法访问路径,但多个嵌入成员出现同名字段或方法时,编译器会按层级和提升规则处理。本文从一个真实的编译错误切入,拆解显式访问、同级冲突和方法集变化,并给出排查清单。360 收藏 -
用 Go 原生 fuzz 测试把线上边界输入沉淀为种子语料,说明失败样本如何复现、加入回归集,并在 CI 中验收执行结果。358 收藏 -
用 time.ParseDuration 解析带小数、负号和多个单位的时长,区分语法错误与 Duration 溢出,并给出可复用的校验写法。358 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 收成新切片,但空序列返回 nil,消费过程也只发生一次。本文用过滤、提前停止和容量检查说明它的语义边界与使用方式。357 收藏 -
Go 1.24 为 testing.T 增加 Context 方法。本文用可运行示例说明测试上下文何时取消、如何配合 Cleanup 管理资源,以及并发子测试中的边界。356 收藏 -
Golang · Go教程 | 2天前 | golang · 随机数 · 接口设计 · 安全编程 · 令牌 · Go crypto/rand 随机令牌 base64.RawURLEncoding 过期校验
Go 的 crypto/rand 适合生成短期一次性令牌,但随机字节数、URL 安全编码和过期校验必须一起设计。本文用一个短期下载令牌示例说明熵预算、存储字段、校验顺序和常见误区。356 收藏 -
time.Ticker.Stop 之后是否还能从 C 通道读到一次事件,取决于 Go 版本、go.mod 语义和退出代码的写法。本文用一个定时刷新任务拆解 Stop 不关闭通道、select 退出、Go 1.23 同步 ticker 通道以及旧版本兼容边界。355 收藏 -
FindAllStringSubmatchIndex 返回的是整段匹配和每个捕获组的字节边界,未参与匹配的组用 -1 标记。本文用 Go 示例拆开索引数组的排列方式,并给出安全切片与 UTF-8 文本处理方法。354 收藏 -
runtime.KeepAlive 的作用不是阻止 GC,而是把对象的可达性延长到指定调用点。本文用外部资源句柄的最小例子说明终结器为什么可能过早运行、KeepAlive 应该放在哪里,以及如何用资源关闭状态验证调用顺序。353 收藏 -
Go 1.27 支持泛型方法,但类型参数写在接收者声明上,接口方法仍不能声明自己的类型参数。本文用一个可运行的小型数值容器,演示声明方式、调用边界、接口限制与 go test 验证。351 收藏 -
用 Go 标准库实现一个可取消的定时重试任务,覆盖 context 取消、指数退避、最大尝试次数、错误分类和优雅退出,给出可直接运行的最小示例与验收方法。349 收藏