知识卡片

方法表达式将方法变为普通函数

专业/工作 · 473.a.1.a.3

内容

Go允许用Type.Method这种写法把一个方法直接当成一个普通函数值取出来,这个函数值的第一个参数就是原本的接收者——比如asString := Part.String得到的函数签名是func(Part) string,调用时要显式把接收者作为第一个参数传进去`asStri发散:这揭示了Go方法的本质——方法从来不是和类型绑死的特殊语法糖,它骨子里就是一个第一参数为接收者的普通函数。

参考来源

- 位置:《Go语言程序设计》第6章《面向对象编程》(源文件:_epub-src/OEBPS/text00040.html) - 结论依据:原文在该章节围绕“Go允许用`Type.Method`这种写法把一个方法直接当成一个普通函数值取出来,这个函数值的第一个参数就是…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:(在其他语言中常常使用术语“未绑定方法”(unbound method)来表示类似的概念。) asStringV := Part.String // 有效签名:func(Part) string sv := asStringV(part) hasPrefix := Part.HasPrefix // 有效签名:func(Part, str…