知识卡片

Reader与Writer接口的组合式鸭子类型

专业/工作 · 482.a.2

内容

Go标准库用两个极简接口统一了几乎所有I/O场景:io.Reader只要求一个Read([]byte) (int, error)方法,io.Writer只要求一个Write([]byte) (int, error)方法。发散:把行为收窄到一两个方法(而不是设计一个大而全的Reader基类),换来的是几乎无限的组合能力——这是[[空接口作为类型无关容器]]之外,鸭子类型在标准库设计里发。

参考来源

- 位置:《Go语言程序设计》第1章《5个例子》(源文件:_epub-src/OEBPS/text00035.html) - 结论依据:原文在该章节围绕“Go标准库用两个极简接口统一了几乎所有I/O场景:`io.Reader`只要求一个`Read([]byte)(…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:的I/O处理功能,包括从UTF-8编码的文本文件中读写字符串的能力。 io 包提供了底层的I/O功能,其中包含了我们的 americanise 程序中所用到的 io.Reader 和 io.Writer 接口。 io/ioutil 包提供了一系列高级文件处理函数。 regexp 包则提供了强大的正则表达式支持。其他的包( fmt 、 lo…