Go教程技术文章
-
用一个批量读取小项目说明 Go bytes.Buffer.Reset 怎样在复用缓冲区时清掉旧内容,如何区分空输入与真实读取错误,以及 Bytes 返回切片的生命周期边界。307 收藏 -
Go bytes.Cut 返回 before、after 和 found,适合在批处理代码中只切首个分隔符。本文用键值记录说明如何区分缺少分隔符与空字段,解释减少中间结果容器的思路,并给出切片共享与 bytes.Clone 的生命周期边界。307 收藏 -
Go time.Date 不会校验并拒绝超范围日期,而是把月份、日期和时间字段归一化。本文用月末构造示例说明 day=0 的含义,并梳理时区、AddDate 和 nil Location 的常见坑。306 收藏 -
Golang · Go教程 | 1个月前 | JSON · go · 泛型 · api设计 · encoding/json UnmarshalJSON 可选字段 零值 Go JSON处理 PATCH接口
Go 的 PATCH 接口如何区分字段缺失、null 与零值?本文用泛型 Optional[T] 保存 Set、Valid、Value 三态,完成解码、校验、更新与测试。306 收藏 -
Golang · Go教程 | 1个月前 | goroutine · go · pprof · 后台任务 net/http/pprof goroutineleak go tool pprof Go goroutine 泄漏剖析
用一个会遗漏 Stop 的最小后台 worker 复现 goroutine 泄漏,采集 Go 1.27 的 goroutineleak profile,定位阻塞代码并完成生命周期修复与复查。306 收藏 -
maps.Clone 只复制 map 的第一层键和值。本文用切片、map、指针和结构体示例拆开嵌套引用边界,并给出需要独立状态时的深复制写法与检查清单。306 收藏 -
Goja 的 Compile 会生成与 Runtime 解耦的 Program,可以只编译一次,再交给多个独立 Runtime 执行。本文用完整示例说明输入注入、运行错误、并发隔离以及 Program 缓存与 Runtime 复用的边界。306 收藏 -
Go 的 io.Pipe 可以让生产者 goroutine 通过 PipeWriter.CloseWithError 把失败原因传给消费者。本文用一条最小配方说明正常 EOF、业务错误和关闭时机的区别。306 收藏 -
Go Benchmark测量分配次数,需先明确一次操作、夹具准备与结果生命周期。本文用分规模字节拼接示例说明ResetTimer、ReportAllocs和三类指标,避免把初始化或缓冲区复用误当成优化收益。306 收藏 -
用 runtime/pprof.Labels 和 pprof.Do 给 goroutine 建立低基数标签作用域,区分 WithLabels、SetGoroutineLabels 与 profile 观察边界,并说明 CPU 与 goroutine profile 的适用范围。306 收藏 -
用 golang.org/x/image/riff 解析 WAVE 时,先判断 formType,再按 ChunkID/FourCC 筛选 fmt 和 data 块,并正确处理 chunkLen、chunkData 生命周期与未知块。306 收藏 -
Go math/bits.ReverseBytes16 接收 uint16 并交换其中的两个字节,适合处理定长整数的字节顺序转换。本文说明它与 Reverse16 的区别,给出协议字段中的调用方式,并提醒不要把字节交换和 encoding/binary 的整体序列化混在一起。306 收藏 -
Go io.SectionReader 可以把支持 ReaderAt 的数据源限制为一个固定字节区间。本文用一个文件片段读取场景说明 NewSectionReader、Read、ReadAt、Seek 和 Size 的关系,并解释为什么它不会推进底层共享对象的顺序偏移。306 收藏 -
Go os.Geteuid 返回当前进程的有效用户 ID。本文用一个跨平台示例区分有效 UID、真实 UID 与有效组 ID,说明 Unix 与 Windows 的返回差异,并解释为什么它不能单独充当权限授权依据。306 收藏 -
在批处理拼接长字符串时,先按字节估算固定文本、记录和分隔符的总量,再调用 strings.Builder.Grow 预留容量。本文用一个可复用示例说明 Len、Cap、String、Reset 与 UTF-8 估算边界。306 收藏