package mainimport "fmt"//动物类
type Animal struct {Name stringLegs int
}//狗类
type Dog struct {Animal //继承Animal类Tail   int
}//狗类下的方法
func (d Dog) Speak() {fmt.Println("汪汪汪!")
}//猫类
type Cat struct {Animal //继承Animal类eyes   int
}//猫类下的方法
func (c Cat) Speak() {fmt.Println("喵~~~")
}//所有拥有Speak()方法的接口
type SpeakAnimal interface {Speak()
}func main() {//实例化对象,并显示申明类中所有变量dog := Dog{Animal{"dahuang", 4}, 1}cat := Cat{Animal{"xiaohua", 4}, 2}var s SpeakAnimals = dogs.Speak()s = cats.Speak()
}

GO的结构特性:导包,类型,类型的方法,函数

1.type

  • 类的关键字由class变为了type
  • 省略了修饰符,由类名的首字母大小写决定访问权限
  • 在类结构体中包含了所有类的成员变量

2.func

func(type Type) Method(int in) int out {
return in
}

  • func(可指定为类的方法) 方法名(传入参数) 返回值
  • 在go里只有类的方法才叫方法,没有指定类的叫函数。
  • 需要特殊注意的是返回值可有多个
  • 注意方法的参数的值传递与引用传递的区别

3.继承

  • Dog类和Cat类都继承了Animal类,同时它们都具有了Animal类的属性和方法。
  • 一般情况下,子类的对象可以调父类的属性,但是如果子类和父类中有重名的属性的话,需要显式调用。(子类.父类.父类的属性)
  • 尽量不要继承!

4.interface

  • interface由方法集所构成
  • GO中interface是隐式声明的,只要包含了接口中的所有方法,就实现了此接口
  • 所以每一个type都隐式的实现了一个空interface,因为空interface的方法集为空

Go语言,作为一门没有对象的OOP相关推荐

  1. 用 C 语言开发一门编程语言 — 字符串与文件加载

    目录 文章目录 目录 前文列表 字符串 读取字符串 注释 文件加载函数 命令行参数 打印函数 报错函数 源代码 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器> <用 C ...

  2. R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集

    R语言union函数计算数据对象(vector.list.dataframe)的并集:union函数计算两个vector向量.dataframe.列表list的并集 目录

  3. R语言unique函数计算数据对象(vector、dataframe)的unique独特值:unique函数从vector向量、dataframe中删除重复项、删除dataframe重复行

    R语言unique函数计算数据对象(vector.dataframe)的unique独特值:unique函数从vector向量.dataframe中删除重复项.删除dataframe重复行 目录

  4. R语言sample函数数据对象采样实战

    R语言sample函数数据对象采样实战 目录 R语言sample函数数据对象采样实战 #基本语法 #仿真数据

  5. 用 C 语言开发一门编程语言 — 条件分支

    目录 文章目录 目录 前文列表 条件分支 排序函数 等于函数 if 函数 递归函数 源代码 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器> <用 C 语言开发一门编程语 ...

  6. 用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计

    目录 文章目录 目录 前文列表 函数 Lambda 表达式 函数设计 函数的存储 实现 Lambda 函数 函数的运行环境 函数调用 可变长的函数参数 源代码 前文列表 <用 C 语言开发一门编 ...

  7. 用 C 语言开发一门编程语言 — 变量元素设计

    目录 文章目录 目录 前文列表 变量 变量语法规则 变量的读取和存储 将变量加入 Lisp Value 体系 变量的计算 变量的定义与赋值 异常处理优化 源代码 前文列表 <用 C 语言开发一门 ...

  8. 用 C 语言开发一门编程语言 — Q-表达式

    目录 文章目录 目录 前文列表 Q-表达式 读取并存储输入 实现 Q-Expression 语法解析器 读取 Q-Expression 实现 Q-Expression 的函数 Head & T ...

  9. 用 C 语言开发一门编程语言 — S-表达式

    目录 文章目录 目录 前文列表 使用 S-表达式进行重构 读取并存储输入 实现 S-Expression 语法解析器 实现 S-Expression 存储器 实现 lval 变量的构造函数 实现 lv ...

最新文章

  1. 讨论UML概念和模型UML九种图。
  2. 家园签到:无忧币天天送,连续领礼更多!【家园帮助】
  3. java二级考试历年真题6_计算机等级考试二级JAVA练习题及答案6
  4. SAP S/4HANA里修改了Business Partner后的调试入口
  5. 微信小程序开发系列四:微信小程序之控制器的初始化逻辑
  6. JS面向对象编程实现
  7. 《信息学奥赛一本通提高篇》第6章 组合数学
  8. 《论文笔记》Collaborative Visual Inertial SLAM for Multiple Smart Phones
  9. 好看的极简网站导航源码自适应静态页
  10. Hanlp得到语义相似度的方法
  11. kcf算法中cos_window是什么意思_知网/维普查重系统算法介绍(史上最详细)
  12. 445端口不通经验总结
  13. ATK-ESP8266 串口转WIFI模块 简历
  14. firefox无法显示flash问题解决
  15. 【FFMPEG】I,P,B帧和PTS,DTS时间戳的关系
  16. cocos2d实现语音_【Cocos Creator与C++知识分享】Creator接入呀呀语音SDK
  17. C#-进击Hangfire
  18. 今日算法笔试练习【5】(08-06)(历年笔试题)
  19. 45岁了社保交了25年不交了行吗?
  20. VBS ADODB操作帮助手册

热门文章

  1. 3D姿态估计|时序卷积+半监督训练
  2. 论文简述 | DOT:面向视觉SLAM的动态目标跟踪
  3. 直播回顾|结构光编码与三维重建技术
  4. R语言绘制堆叠的环状条形图
  5. iMeta期刊推特官方帐号@iMetaJournal上线
  6. Nature:承磊/李猛等发现产甲烷古菌的碳代谢新途径
  7. QIIME 2教程. 23图形界面q2studio(2020.11)
  8. RandomForest:随机森林预测生物标记biomarker——分类
  9. Python使用matplotlib可视化多个不同颜色的折线图、通过FontProperties为可视化图像配置中文字体可视化、并指定字体大小
  10. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等