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

类实例变量与类方法

类实例变量与类方法无需实例化即可使用,在Ruby中,类实例变量用@var定义。

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

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

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

func Kind() string {

}

实例变量与实例方法

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

Ruby Example:

class Person
  def initialize
    @kind = ""
  end

  def kind
    @kind
  end

end

Golang Example:


type Person struct {
  kind string
}

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

方法与实例变量

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

实例变量的作用是,存储对象的属性,用于区分不同对象。

接口

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