Too Much Go Misdirection
a year ago
- #io.Reader
- #Performance
- #Go
- Go语言的io.Reader接口通常用于流式数据传输,但有时需要直接访问字节数据
- 作者发现当需要直接从io.Reader获取字节数据时效率低下,尤其是使用libavif和libheif这类库时
- 尝试通过类型断言和unsafe.Pointer直接访问bytes.Reader中的字节数据作为解决方案
- image.Decode函数会将没有Peek方法的读取器包装成bufio.Reader,使问题复杂化
- 进一步的解决方案涉及解包bufio.Reader以访问底层的bytes.Reader
- 作者批评Go语言的结构化类型和标准库实践形成了未文档化的'影子API'
- 作者反思了Go语言这类设计选择带来的更广泛影响