所在的位置: html >> html前景 >> golang2021面向对象14Go

golang2021面向对象14Go

Go语言可以对任何类型添加方法,给一种类型添加方法就像给结构体添加方法一样,因为结构体也是一种类型。

为基本类型添加方法

在Go语言中,使用type关键字可以定义出新的自定义类型,之后就可以为自定义类型添加各种方法了。我们习惯于使用面向过程的方式判断一个值是否为0,例如:

ifv==0{//v等于0}

如果将v当做整型对象,那么判断v值就可以增加一个IsZero()方法,通过这个方法就可以判断v值是否为0,例如:

ifv.IsZero(){//v等于0}

为基本类型添加方法的详细实现流程如下:

packagemain

import("fmt")

//将int定义为MyInt类型typeMyIntint

//为MyInt添加IsZero()方法func(mMyInt)IsZero()bool{returnm==0}

//为MyInt添加Add()方法func(mMyInt)Add(otherint)int{returnother+int(m)}

funcmain(){

varbMyInt

fmt.Println(b.IsZero())

b=1

fmt.Println(b.Add(2))}

代码输出如下:

true

3

代码说明如下:

第8行,使用typeMyIntint将int定义为自定义的MyInt类型。

第11行,为MyInt类型添加IsZero()方法,该方法使用了(mMyInt)的非指针接收器,数值类型没有必要使用指针接收器。

第16行,为MyInt类型添加Add()方法。

第17行,由于m的类型是MyInt类型,但其本身是int类型,因此可以将m从MyInt类型转换为int类型再进行计算。

第24行,调用b的IsZero()方法,由于使用非指针接收器,b的值会被复制进入IsZero()方法进行判断。

第28行,调用b的Add()方法,同样也是非指针接收器,结果直接通过Add()方法返回。




转载请注明:http://www.aierlanlan.com/cyrz/5598.html