知识卡片
Stringer接口是打印行为的扩展点
内容
fmt 包定义了一个只要求实现”返回 string 的 String 方法”的 Stringer 接口,Print、Println、 Printf 等函数在打印任何值之前,都会先检查这个值是否满足 Stringer——如果满足,就调用它的 String 方法拿到返回的字符串来显示,而不是用默认的格式化规则。发散:这是一种”预留扩展点”的设计手法——标准库不 可能预知所有自定义类型该怎么显示,与其穷举特殊情况,不如定。
参考来源
- 位置:《Head First Go语言程序设计》第11章《你能做什么:接口》(源文件:_epub-src/index_split_002.html)
- 结论依据:原文在该章节围绕“fmt包定义了一个只要求实现"返回string的String方法"的Stringer接口,Print、Prin…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:着的if和for代码块吗?全 局块包裹着所有的包块。那意味着你可以在任意包中使用全局块中定义 的任何东西,而不用导入它。那包括了error和其他预定义标识符。 Stringer接口 记得之前在第9章我们为了区分多种描述容积的单位而创建的 Gallons、Liters和Milliliters类型吗?我们发现,毕竟很难区分它们。12 加仑与1…