Go教程技术文章
-
Go json.Decoder 没有单次读取字节数设置。通过 LimitReader 的加一字节预算区分超限,检查尾随内容,并结合 MaxBytesReader 返回明确的HTTP错误。406 收藏 -
Go crypto/mlkem 用 ML-KEM-768 生成密钥、封装共享秘密与解封装密文。通过原创函数示例区分公开材料和秘密材料,解释错误处理、返回顺序及身份认证边界。406 收藏 -
Go stringsseq 适合把只遍历一次的 strings.Split 或 strings.Fields 迁移为 SplitSeq、FieldsSeq,减少临时切片分配。本文说明适用边界、go fix 预览方法、版本要求以及索引、重复遍历和语义回归检查。406 收藏 -
Go regexp.Regexp.LiteralPrefix 可以提取所有匹配都必须以它开头的字面字符串,并用 complete 区分完整正则与前缀过滤条件。本文用固定开头、字符类、分支和 HasPrefix 预过滤示例说明它的边界。406 收藏 -
SJSON 的 SetRaw 需要一个非空路径,空路径会返回 path cannot be empty,因此它不适合直接替换完整根 JSON。本文区分根文档替换、根对象字段写入和嵌套字段更新,并给出 SetRawBytes 的选择方式。405 收藏 -
io/fs 使用统一斜杠路径,而本地文件系统使用操作系统分隔符。本文用 filepath.Localize 完成转换,说明 ValidPath 前置条件、Windows 兼容错误与文件操作边界。405 收藏 -
Go bytes.CutPrefix 用 after 和 found 同时表达去掉固定前缀后的切片与是否命中。本文说明未命中、空前缀、底层数组共享及旧版本兼容边界。405 收藏 -
解释 io.Pipe 读取端提前关闭时写入返回 ErrClosedPipe 的原因,对比两端 CloseWithError 的传递方向,并通过原创建例说明部分写入、错误识别和生产者收尾。405 收藏 -
Go encoding/base32 默认会生成带等号的 Base32 字符串,WithPadding(base32.NoPadding) 则关闭填充。本文解释两种格式的差异,给出带等号、无填充和混合历史数据的解码写法,并说明如何用统一编码策略完成迁移。405 收藏 -
Go 中要在文件已存在时拒绝覆盖,应把 os.O_CREATE 与 os.O_EXCL 一起传给 os.OpenFile。本文说明返回错误的判断方式、先 Stat 再 Create 的竞态,以及权限和关闭句柄时的边界。404 收藏 -
Golang · Go教程 | 3星期前 | 基准测试 · testing · 性能 · Go教程 · GOMAXPROCS RunParallel Go testing.B.SetParallelism 并行基准 IO吞吐
围绕 Go testing.B.SetParallelism 说明 IO 型 RunParallel 基准为何需要调整并发倍数,给出 p×GOMAXPROCS 的换算、独立 worker 写法、档位对比和连接池边界判断。404 收藏 -
Go runtime/metrics 的直方图判断应看 Description.Kind,而不是猜测指标名称。本文说明如何从 All 建立描述符索引,安全读取 KindFloat64Histogram,并正确理解 Buckets 与 Counts 的关系。404 收藏 -
Go x/text/encoding/charmap 的 EncodeRune 接收一个 rune,返回目标单字节编码中的 byte 和一个 bool。本文说明如何用 ok 判断字符能否编码,如何定位整段文本中的不可表示字符,以及何时改用 NewEncoder 或 UTF-8。404 收藏 -
解释 Go time.Ticker 停止后为什么不能自动清理消费 goroutine,并给出用 context.Done 协作退出、用 defer Stop 收尾 ticker 的实用写法。404 收藏 -
Golang · Go教程 | 2天前 | 并发 · 标准库 · 定时任务 · 性能优化 · Go教程 · 批处理 计时器 Go 内存分配 time.Ticker Ticker.Reset Ticker.Stop
Go time.Ticker 的关键不在于盲目调用 Stop,而在于明确 ticker 的生命周期:用 context.Done 结束周期任务,用 Stop 停止后续 tick,用 Reset 复用同一任务内的节拍,避免批处理循环反复创建 ticker 和失去资源归属。404 收藏