Golang和Ruby的面向对象特性对比

类实例变量与类方法

类实例变量与类方法无需实例化即可使用,

Ruby中:

类实例变量用@var定义。

类方法为类中的单件方法,也称为类宏,如attr_accessorvalidates等,在类的上下文直接使用。

class A
  def self.kind
    "class method"
  end
end

Golang中:

类变量类似包中全局变量,类方法为没有指定接收者的方法

func Kind() string {

}

实例变量与实例方法

和对象绑定的变量和方法。使用对象的引用来调用。

class Person
  def initialize
    @kind = ""
  end

  def kind
    @kind
  end

end


type Person struct {
  kind string
}

func (person *Person) Kind() string {
  return person.kind
}

方法与实例变量

方法。逻辑复用,操作对象,继承和复用。

实例变量。对象的值,用于区分对象。

接口

接口是方法签名的集合。鸭子类型的实现基础,只关系功能集,不关系具体的类型。