ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Goland:继承、封装和多态

2022-04-29 15:05:02  阅读:186  来源: 互联网

标签:run struct People 多态 接口 InterfaceTest Goland 封装


继承:
1.将其他结构体当成构建结构体的一部分。
2.结构体的几种关系:继承(强耦合)、实现(接口和实现类)、依赖(将一个结构体作为另一个结构体的参数)、关联(强依赖和平等)、聚合(整体和部分)、组合(整体和部分,不可分和同周期)
组合>聚合>关联>依赖
3.在go中用匿名属性实现继承
例如:
type People struct {
name string
}
type Teacher struct {
classroom string
People
}

封装:
1.最直接的就是函数名首字母大小写,大写才能被其他包调用,小写只能在所在包调用。
2.对另一个包下的参数调用,在那个包下实现设置、取值的相关方法以供外部调用,不然无法访问结构体里的参数。

多态:
1.多态就是接口的用法表示,接口就是一组操作的声明,然后后面再按方法的实现来完成不同结构体下的实现基于接口的多态。
2.多态在代码层面最常见的就是将接口当做方法参数
在这里的话说明一下我当前对接口类型的理解:
除了基本数据类型,复合类型指针pointer、数组array、切片slice、字典map、channel,
结构体struct和接口interface其实有点像?因为go也说了只要一个结构体实现了接口的全部方法,这个结构体就属于接口类型了,映射到代码上就是这个结构体的变量可以作为一个整体赋给接口变量,然后接口变量调用接口方法时,具体调用哪个方法就看赋值的结构体是哪种类型,实现出来就是那种类型下的接口方法。
注意:因为interface也是一个类型,上面接口类的接口方法要按函数/方法那样写出来
例如:

点击查看代码
package InterfaceTest

import "fmt"

type People struct {
	name string
}

type Animate struct {}

type Live interface {
	run()
}

func (p *People) run() {
	fmt.Println("执行people的run")
}

func (a *Animate) run() {
	fmt.Println("执行Animate的run")
}

func Allrun(live Live)  {
	live.run()
}
点击查看代码
package main

import "myItem/src/InterfaceTest"

func main() {

	//接口测试2
	peo := &InterfaceTest.People{}
	ani := &InterfaceTest.Animate{}
	InterfaceTest.Allrun(peo)
	InterfaceTest.Allrun(ani)

}

标签:run,struct,People,多态,接口,InterfaceTest,Goland,封装
来源: https://www.cnblogs.com/ganhuasen/p/16206654.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有