Go语言技术文章
-
用 Go testing.F 为字符串解析器添加少量边界种子,区分预期的解析错误与真正的不变量破坏,并让 fuzz 失败输入沉淀到 testdata/fuzz/FuzzParseRecord,成为可重复执行的回归样本。313 收藏 -
Go io.CopyBuffer 的缓冲区不是越大越快。本文从 WriterTo/ReaderFrom 复制路径、32 KiB 基线、并发内存预算和错误边界出发,说明如何选择 32、64 或 128 KiB,并给出可复用的文件复制示例。313 收藏 -
用 Go 的 http.ServeContent 处理 Range 请求,关键是传入支持 Seek 的 io.ReadSeeker,并通过 206、Content-Range、Content-Length 和 416 判断区间是否读取正确。312 收藏 -
Golang · Go教程 | 3天前 | 流式处理 · Go教程 · CloseWithError Go io.Pipe Go 流式上传 json Encoder 请求体 NewRequestWithContext
用 Go io.Pipe 把编码器输出直接连接到 HTTP 请求体,讲清并行启动、EOF、CloseWithError、context 取消和上传重试边界。310 收藏 -
Go time.Ticker 只负责按周期发送时间信号,不会自动结束 goroutine。本文用 context、select 和 WaitGroup 实现可停止的周期任务,并说明 Stop 不关闭通道、慢任务丢 tick 和 Reset 的边界。309 收藏 -
Go 的 container/heap 读取分三种场景:只读堆顶、用 heap.Pop 消费原堆,以及复制堆后得到有序快照。本文用最小堆示例说明索引 0、Less 规则、空堆判断和指针元素的边界。308 收藏 -
Go modgo 报错时,实际应从 go.mod 的 go 指令、模块图和 tidy 三个边界排查。本文用 go env GOMOD、go list -m all、go mod graph、go mod why -m 和 tidy -diff 定位依赖变化来源。308 收藏 -
Go 先用 image.DecodeConfig 读取图片格式、宽高和颜色模型,再按像素预算决定是否调用 Decode,适合上传校验和内存保护。307 收藏 -
Golang · Go问答 | 3天前 | go · Go File.WriteAt 并发写 Go 文件分片写入 Go os.File 并发安全 Go WriterAt 不重叠区间 Go O_APPEND WriteAt
Go 的 os.File 可以被多个 goroutine 并发调用,但 File.WriteAt 是否安全取决于写入区间、打开模式、缓冲区生命周期和错误处理。本文用分片写入示例说明可行边界。307 收藏 -
Go time.Date 不会校验并拒绝超范围日期,而是把月份、日期和时间字段归一化。本文用月末构造示例说明 day=0 的含义,并梳理时区、AddDate 和 nil Location 的常见坑。306 收藏 -
context.WithoutCancel 会保留父级值访问,却主动切断 Deadline、Done、Err 和 Cause。本文用最小示例说明原因,并给出后台任务重新建立独立超时的写法。305 收藏 -
Go archive/zip 报错不一定是整个 ZIP 都坏了。本文按中央目录、本地文件头和内容校验三个边界排查 ErrFormat、ErrChecksum,并给出生成端 Close 检查清单。303 收藏 -
Go base64.NewEncoder 会缓存不足三个字节的尾部数据。本文按输入长度余数说明忘记 Close 时标准 Base64 会少掉多少字符,并给出显式 Close、错误检查和边界回归测试的修复方法。303 收藏 -
Go 的 C 回调不能直接把函数值当作 C 函数指针传递。本文用导出函数、C 网关和 runtime/cgo.Handle 说明如何保持回调引用,并按同步、异步和并发注销场景判断安全释放时机。301 收藏 -
Go 的 httptest.ResponseRecorder.Code 为 0 不一定代表接口返回了 0。处理器没有显式写状态或响应体时,应在执行结束后调用 Result().StatusCode 读取隐含的 200,并理解 Code、HeaderMap 与 Result 的边界。300 收藏