Go语言程序设计(十三)方法

        Go语言虽然没有类(Class),但同样支持方法(Method),Go语言里的Method其实就是一个带接收者(Receiver)的函数。

一、Method的基本定义

        Go语言中的Method类似于一个函数,只是函数名前多了一个绑定类型参数——receiver。

基本格式如下:

func (recv receiver_type) methodName(参数列表)(返回值){
        ...........
}

Method中的Receiver可以是内置类型、自定义类型、结构体或指针类型。

1、多个Method可以同名

(1)在定义Method时,多个Method可以同名,如果接收者不一样,那么Method就不一样。

(2)如果普通类型作为Receiver,它只是一个值传递;而指针类型作为Receiver,它将是一个引用传递。两者的差别在于,指针作为Receiver 会对实例对象的内容发生操作,而普通类型作为Receiver仅是以副本作为操作对象,并不对原实例对象发生操作

(3)Method里面可以访问接收者的字段,调用Method进行访问,就像在Struct里访问字段一样。

2、匿名Receiver

(1)如果方法代码中从不使用Receiver参数,那么就可以省略Receiver的变量名,此时的接收者将是一个匿名Receiver。

(2)如果定义了两个匿名Receiver,一个是普通类型,另外一个是指针类型。注意,这种情况下方法名不能同名,要不然编译会出错。

二、Method的继承

        如果匿名字段实现了一个Method,那么包含这个匿名字段的Struct对象也能调用该Method。

 三、Method重写

        在上例中,如果student想要实现自己的sayHi()方法,可以采用Method重写的方法来解决。这和匿名字段重名是一样的道理,即外部方法会隐藏匿名字段同名方法。所以可以在student上再定义一个Method,重写了匿名字段的方法。

 编译并运行该程序,输出结果为:

Hi,I'm郑智you can call me on 010一22002.
Hi,I'm李明,I study in Yale University,call me on 010- 11001.

        通过上例的运行结果可以看出,对象studentl在调用sayHi()方法时,Receiver为people的方法将被隐藏,实际调用的是Receiver为student的这个外部sayHi()方法。文章来源地址https://uudwc.com/A/a2vj6

阅读剩余 70%

原文地址:https://blog.csdn.net/java_faep/article/details/131584094

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年07月14日 05:10
简单线性回归评估指标+R Squared
下一篇 2023年07月14日 05:10