go 语言方法与接口

go 语言方法与接口

go语言中没有类class的概念、没有对象object关键词、也没有继承(但可以使用组合来实现继承关系),但提供了接口的支持,可以使用接口来实现面向对象的一些特性。

在go语言中结构体struct和其他面向对象语言中的class有同样的地位。结构体是将零个或者多个任意类型的命令变量组合在一起的聚合数据类型。每个变量都叫做结构体的成员。

type user struct {
	name string
	email string
	address address     # 通过组合来关联 address
}
type address struct {
	...
}
// 一个使用指针接受者实现的方法
function(u *user) notify(){
	fmt.Printf("Sending user email to %s<%s>\n", u.name, u.email)
}

一个绑定了结构的函数就是一个 方法 ,该结构体着这里叫做接受者receiver,接受者可以是内置的类型也可以是自定义类型,也可以是类型指针。在方法中接受者就像C++中的this和Python中的self,但它是显式的声明其所属类型。

接口 Interface 是一组抽象方法(未具体实现的方法/仅包含方法名参数返回值的方法)的集合,如果实现了 interface 中的所有方法,即该类/对象就实现了该接口。
在上面代码的基础上添加:

// 定义一个接口类型
type notifier interface {
	notify()
}

type user struct {
	name string
	email string
	address address     # 通过组合来关联 address
}
type address struct {
	...
}
// 一个使用指针接受者实现的方法 实现了接口中的方法
function(u *user) notify(){
	fmt.Printf("Sending user email to %s<%s>\n", u.name, u.email)
}

// main是应用程序的入口
func main(){
	u := user{"XiaoMing", "xiaoming@qq.com"}
	sendNotification(&u)
}
// 该函数接受实现了 notifier 接口的值
func sendNotfication(n notifier){
	n.notify()
}

参考: go语言学习-接口

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值