Go 语言初级教程之七[面向对象]

面向对象
Go语言支持类似于C语言中使用的面向对象风格。数据被组织成structs,然后定义操作这些structs的函数。类似于
Python,Go语言提供 了定义函数并调用它们的方式,因此语法并不会笨拙。

Struct类型
定义一个新的struct类型很简单:
 

  1. type Point struct {
     
  2.   x, y float64
     
  3. }


现在这一类型的值可以通过内建的函数new来分配,这将返回一个指针,指向一块内存单元,其所占内存槽初始化为
零。
 

  1. var p *Point = new(Point)
     
  2. p.x = 3
     
  3. p.y = 4


这显得很冗长,而Go语言的一个目标是尽可能的简明扼要。所以提供了一个同时分配和初始化struct的语法:
 

  1. var p1 Point = Point{3,4}  // Value
     
  2. var p2 *Point = &Point{3,4} // Pointer



方法
一旦声明了类型,就可以将该类型显式的作为第一个参数来声明函数:
 

  1. func (self Point) Length() float {
     
  2.   return math.Sqrt(self.x*self.x + self.y*self.y);
     
  3. }


这些函数之后可作为struct的方法而被调用:
 

  1. p := Point{3,4}
     
  2. d := p.Length() //=> 5


方法实际上既可以声明为值也可以声明为指针类型。Go将会适当的处理引用或解引用对象,所以既可以对类型T,也
可以对类型*T声明方式,并合理地使用它们。
让我们为Point扩展一个变换器:
 

阅读全文>>

你可能感兴趣的:(Go 语言初级教程之七[面向对象])