Go语言中的面向对象

1, 将函数当做struct字段来处理:

2, import加载标准库可以直接import{"package name"},实际上是去goroot下加载该模块。对于用户自己的包,则需要在package name 之前加上package path,而path既可以采用相对路径也可以采用绝对路径。a), 点操作:import{."package name"}导入包之后,在调用包中的函数时,可以省略包名,直接调用函数名。b), 别名:import的"packag name"之前加上别名,如import{f "fmt"},那么在调用时,"fmt."就可以简写为"f."。 c), 在import的“package name”之前加上_,表示不直接使用包里的函数,而是调用了该包里的init函数。

3, method:

依附于一个给定的类型上,它的语法和函数的声明几乎一样,只不过在func后面增加一个receiver(即method所依从的主体),可以是值传递也可以是指针传递。

当指针作为receiver时,有两种访问方式。例如:func (b *Box) SetColor(c Color) {...},既可以用*b.c也可以用b.c访问b指针指向的Box的颜色。

而在调用该SetColor函数时,既可以直接使用Box的对象调用,也可以使用Box对象的指着调用。即:b Box   b.SetColor()和(&b).SetColor()均可调用该函数。

反之亦可,即指针变量也是可以直接调用receiver为普通类型的函数。

4, method继承:

如果匿名字段实现了一个method,那么包含该匿名字段的struct也可以调用该method。

如果包含匿名字段的struct想要实现自己的与匿名字段的method同名的method,那么就可以直接自己定义该method,重写。

通过以上内容就实现了基本的面向对象,通过大小写来实现“大写公有,小写私有”。

5, 巧妙的interface:

interface是一组method的组合,通过interface可以定义对象的一组行为。

 

 

 

 

posted @ 2014-05-25 20:45  小菜鸟儿  阅读(255)  评论(0编辑  收藏  举报