Oop 为什么go语言对方法有奇怪的语法
我不能很好地理解为什么go开发人员决定使用类似Oop 为什么go语言对方法有奇怪的语法,oop,go,Oop,Go,我不能很好地理解为什么go开发人员决定使用类似func(t-Type)MethodName()的语法作为方法。我无法消化这个事实,尤其是在考虑到围棋是极简主义的事实之后。像func Type.MethodName()或func Type::MethodName()这样的简单语法对于使用this或self这样的隐式参数访问对象是否足够。或者,我是否错过了当前语法提供的任何优势?该特定语法的目标对于Go语言来说非常特殊,无法轻松映射到其他语言语法: 此语法允许您定义 类型可能有与其关联的方法集。方法
func(t-Type)MethodName()
的语法作为方法。我无法消化这个事实,尤其是在考虑到围棋是极简主义的事实之后。像func Type.MethodName()
或func Type::MethodName()
这样的简单语法对于使用this
或self
这样的隐式参数访问对象是否足够。或者,我是否错过了当前语法提供的任何优势?该特定语法的目标对于Go语言来说非常特殊,无法轻松映射到其他语言语法:
此语法允许您定义
类型可能有与其关联的方法集。方法集是它的接口
- 任何其他类型
的方法集由所有使用接收方类型T
声明的方法组成李>T
- 相应指针类型
的方法集是使用receiver*T
或*T
声明的所有方法集(也就是说,它还包含T
的方法集)李>T
加上:
显式接收方声明允许您做两件特殊的事情:
self
”或“this
”(例如,您可能有一个func(srv*服务器)…
)。上下文特定的名称是
看 方法接收方的名称应反映其身份;通常,其类型的一个或两个字母缩写就足够了(例如“
c
”或“cl
”表示“客户机
”)
不要使用泛型名称,如“me
”、“this
”或“self
”,这些标识符是面向对象语言的典型标识符,它们更强调方法而不是函数。该名称不必像方法参数那样具有描述性,因为它的作用是显而易见的,并且不用于记录目的。它可以很短,因为它几乎会出现在每一种类型的方法的每一行上;熟悉意味着简洁。
也要保持一致:如果在一种方法中调用接收者“
c
”,在另一种方法中不要调用它“cl
”
该特定语法的目标对于Go语言来说非常特殊,无法轻松映射到其他语言语法: 此语法允许您定义 类型可能有与其关联的方法集。方法集是它的接口
- 任何其他类型
的方法集由所有使用接收方类型T
声明的方法组成李>T
- 相应指针类型
的方法集是使用receiver*T
或*T
声明的所有方法集(也就是说,它还包含T
的方法集)李>T
加上:
显式接收方声明允许您做两件特殊的事情:
self
”或“this
”(例如,您可能有一个func(srv*服务器)…
)。上下文特定的名称是
看 方法接收方的名称应反映其身份;通常,其类型的一个或两个字母缩写就足够了(例如“
c
”或“cl
”表示“客户机
”)
不要使用泛型名称,如“me
”、“this
”或“self
”,这些标识符是面向对象语言的典型标识符,它们更强调方法而不是函数。该名称不必像方法参数那样具有描述性,因为它的作用是显而易见的,并且不用于记录目的。它可以很短,因为它几乎会出现在每一种类型的方法的每一行上;熟悉意味着简洁。
也要保持一致:如果在一种方法中调用接收者“
c
”,在另一种方法中不要调用它“cl
”
显式接收器声明允许您做两件特殊的事情:1)确定某些方法将获得指针接收器,而其他方法(通常是内存占用小的类型上的非变异方法)不获得指针接收器;2)选择上下文特定的名称,而不是“self”或“this”(例如,您可能有一个
func(srv*Server)
); 上下文特定的名称在Go中被认为是很好的样式(请参阅)。@two good points。我有