Golang 中为 func 类型定义成员函数

刚开始接触 Golang 语言,在阅读项目代码时对其中为 func 类型定义成为变量感到疑惑,查阅资料并记录如下。

// A Getter loads data for a key.
type Getter interface {
	Get(key string) ([]byte, error)
}

// A GetterFunc implements Getter with a function.
type GetterFunc func(key string) ([]byte, error)

// Get implements Getter interface function
func (f GetterFunc) Get(key string) ([]byte, error) {
	return f(key)
}

其中 GetterFunc 为 func 类型,并使用成员函数的写法实现了 Get 方法。这里的关键点在于,为该 func 类型 type GetterFunc 定义成员函数,相当于为该类型的函数实现了方法某个方法。这种写法在我们的上下文中可以理解为:

  1.  符合 GetterFunc 类型的函数必须实现 Get 方法。
  2.  该类型函数被创建后自动以成员函数形式实现 Get 方法。

因此,这种写法使得任何 GetterFunc 类型的函数都自动实现了 Getter 接口,因为它实现了符合接口要求的 Get 方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值