Go语言为任意类型添加方法

2020-02-09  本文已影响0人  码二哥

参考:
http://c.biancheng.net/view/70.html

关键点

1、面向对象编程

2、如果基本类型,如int,string,bool等类型,改为面向对象的编程想法的话, 可以使用type + 接收器方式实现

A、使用type 基于基本类型 自定义的类型(type的使用场景之一)

B、使用接收器,为自定义的新类型,添加方法,从而将方法新类型的实例,进行了绑定,从而不能独自调用该方法

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

1、为基本类型添加方法

在Go语言中,使用 type 关键字可以定义出新的自定义类型,之后就可以为自定义类型添加各种方法了。

我们习惯于使用面向过程方式判断一个值是否为 0,例如:

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

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

if  v.IsZero() {
    // v等于0
}
image

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

package main
import (
    "fmt"
)
// 将int定义为MyInt类型
type MyInt int
// 为MyInt添加IsZero()方法
func (m MyInt) IsZero() bool {
    return m == 0
}
// 为MyInt添加Add()方法
func (m MyInt) Add(other int) int {
    return other + int(m)
}
func main() {
    var b MyInt
    fmt.Println(b.IsZero())
    b = 1
    fmt.Println(b.Add(2))
}

代码输出如下:

true
3

代码说明如下:

上一篇 下一篇

猜你喜欢

热点阅读