首页 > 区块链 > 「链块技术31期」区块链基础语言——Go语言面向对象:方法
中心科技  

「链块技术31期」区块链基础语言——Go语言面向对象:方法

摘要:go语言与区块链原文链接:http://www.liankuai.tech/public/technology/53.html封装是面向对象三大特性之一。封装的好处,一个是增加代码内聚性,就是将数据和对数据的操作封装在一起,提高可复用性和可维护性;还有就是信息隐藏,就是把不该暴露的信息藏起来,通过访

全文连接:http://www.liankuai.tech/public/technology/53.html

封装形式是面向对象三大特点之一。封装形式的益处,一个是提升编码耦合性,便是将信息和对数据的实际操作封装形式在一起,提升可重复使用性和可扩展性;也有便是信息内容掩藏,便是把不应该曝露的信息内容藏起来,根据密钥管理来掩藏数据信息,不被外部影响。换句话说,一个目标便是一个封装形式了信息和实际操作这种信息的编码的逻辑性实体线。

Go语言并没有封装形式这一专有名词,但它根据方法完成了封装形式的特点。

一、Go语言方法

方法,实质上是一个函数公式。与一般函数公式的文件格式有一点不一样,它在关键词 func 和方法名正中间添加了一个独特的信号接收器类型。其文件格式如下所示:

「链块技术31期」区块链基础语言——Go语言面向对象:方法

注:a. 接收者t的名称自定,它可以被方法的内部结构具体内容浏览;

b. 类型有着的全部方法名城务必是唯一的,但不一样的类型可以采用同样的方法名;

c. 创建在Type类型的方法,让Type类型的信息和对于此事数据信息开展的编码实际操作捆缚在一起,完成了封装形式。

1.1 结构体类型的接收者与基本上类型

的接收者

接收者既可以是结构体类型,还可以是基本上类型。

接收者类型为结构体类型,界定的结构体和定义在结构体上的方法同为一个main包,因此方法可以同时关联到结构体类型的接收者上。可是Go语言的基本上类型坐落于builtin包,界定于main包的方法不可以立即关联在基本类型的接收者,因此务必先向基本上类型申明类型别称。

1.1.1 结构体类型接收者

接收者可以被方法内部结构具体内容浏览,当接收者类型为结构体类型时,方法内部结构还可以浏览结构体的成员变量,访问文件格式为:

「链块技术31期」区块链基础语言——Go语言面向对象:方法

方法的启用文件格式为:

「链块技术31期」区块链基础语言——Go语言面向对象:方法

注:“变量定义.方法名”被称作选择符。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

1.1.2 基本上类型接收者

在应用方法以前先向基本上类型申明类型别称,再应用方法。方法的启用文件格式为:

「链块技术31期」区块链基础语言——Go语言面向对象:方法

注:“变量定义.方法名”被称作选择符。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

1.2 值类型的接收者与表针类型的接

收者

接收者是值类型:方法启用时,无论传到的另一半是值类型或是表针类型,信号接收器都是会将他们转换为值类型,在方法内部结构对值类型接收者开展更改,对该自变量没有危害;

接收者是表针类型:方法启用时,无论传到的另一半是值类型或是表针类型,信号接收器都是会将他们转换为表针类型,在方法内部结构对表针类型接收者开展更改,对该自变量有影响。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

二、方法解析函数的差别

在Go语言里,方法实质上是函数公式,但它与一般函数公式还有点儿不一样,如表1所显示。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

2.1 方法解析函数在传到目标层面的差别

2.1.1 接收者为值类型的方法和主要参数为值类型

的函数公式的差别

函数参数为值类型,它只有接受值类型的实参;

方法的接收者为值类型,它既可以接收值类型的传到目标,还可以接受表针类型的传到目标。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

2.1.2 接收者为表针类型的方法和主要参数为表针

类型的函数公式的差别

函数参数为表针类型,它只有接受表针类型的实参;

方法的接收者为指针类型,它既可以接受值类型的传到目标,还可以接受表针类型的传到目标。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

2.2 好几个方法和多个函数公式在是不是可以同

名层面的差别

接收者类型不一样,方法名可以同样,即相同名称的方法可以界定在不一样的类型上。可是一个程序流程不可以有两个同样名称的函数公式。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

三、方法值和方法关系式

方法的启用除开“目标变量定义.方法名(主要参数)”这类方式之外,也有此外二种表达形式:方法值和方法关系式。

3.1 方法值

方法启用的一种表达形式是方法值,即选择符做为一个值取值给一个自变量。这时这一自变量是一个函数公式类型自变量,它把方法关联到接收者。函数公式只需给予实参而不用给予接收者就可以启用。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

3.2 方法关系式

方法启用的另一种方式是方法关系式,如表2所显示。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

注:a. 引入的方法关系式被复原变成一般函数公式款式,将此关系式取值给一个自变量,启用时接收者是第一个主要参数,务必显式传参。

b. 若方法信号接收器类型是值类型:当方法关系式中的类型是值类型T,方法表达式启用时,接收者也一定要是值类型p;当方法关系式中的类型是表针类型(*T),方法关系式启用时,接收者也一定要是表针&p;

c. 若方法信号接收器类型是表针类型:方法关系式中的类型只有是表针类型(*T),方法关系式启用时,接收者务必是表针&p。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

四、方法的延迟时间启用

defer不但仅限于函数公式的启用,还可以用以方法的延迟时间启用。

「链块技术31期」区块链基础语言——Go语言面向对象:方法

参考文献

[1] 许式伟,吕桂华.Go语言程序编写[M].北京市:人民邮电出版社,2012:62-67.

[2] 谭浩强.C 面向对象编程设计[M]. 清华大学出版社,2006

[3] 陈维兴,陈昕.C 面向对象程序设计[M]. 人民邮电出版社,2010

-END-

「链块技术31期」区块链基础语言——Go语言面向对象:方法

另附链块学校网课学习服务平台连接:http://wk.liankuai.tech/

助课通讯卫星:lkxy007

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。