zoukankan      html  css  js  c++  java
  • 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可以定义对象的一组行为。

  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/junwangustc/p/3751568.html
Copyright © 2011-2022 走看看