博客
关于我
go语言中类的继承和方法的使用
阅读量:612 次
发布时间:2019-03-13

本文共 1226 字,大约阅读时间需要 4 分钟。

作为一名Golang开发者,我最近在学习Go语言的核心概念,特别是在类和继承关系上的操作。通过实践,我尝试编写了一段代码,定义了两个结构体,并通过方法来展示它们的行为差异。我创建了一个简单的Human结构体和一个继承自HumanSuperHuman结构体。

Human结构体包含三个字段:name(字符串),gender(字符串),以及与Human自身相关联的其他属性。通过fmt.Println,我可以输出这四个字段的值:

type Human struct {    name  string    gender string}func (this *Human) Eat() {    fmt.Println("Human eat.....")}

接着,我定义了一个继承自HumanSuperHuman结构体,它在Human的基础上增加了一个id字段,这个字段是一个整数类型。SuperHuman还定义了一个新的方法,Eat(),它会输出一个不同的消息:

type SuperHuman struct {    Human    id int}func (this *SuperHuman) Eat() {    fmt.Println("我是神。。。。。。。")}

在主函数main中,我创建了一个SuperHuman实例:

superPeople := SuperHuman{    Human{"neu", "male"},    1}

这里,我使用了SuperHuman的构造函数,首先调用了它的Human字段,再指定了id的值。接下来,我尝试修改SuperHuman实例的字段:

var s SuperHumans.id = 2323s.name = "jiaqiang"s.gender = "female"

通过这些操作,我展示了如何在Go语言中使用动态关联(即嵌套结构体)来设置继承对象的额外属性。嵌套结构体允许我在定义派生类型时重用基础类型的属性,同时还可以添加新的属性,如id字段。

在代码执行后,我打印了实例:

superPeopleHuman字段,也就是其嵌套的namegender和其他属性。通过这种方式,我可以验证这些字段是否正确设置,并查看输出结果是否符合预期。

SuperHumanEat()方法也会被正确调用,并按预期输出不同的消息。这个差异可以非常直观地显示超人和普通人之间的区别,进而反映出多态性(Polymorphism)的概念。

通过这段代码,我对Go语言中结构体和继承的理解得到了进一步加深。结构体在Go语言中的使用极其灵活,特别是在处理复杂数据关系时,嵌套结构体提供了一个强大的工具。同时,方法的多态性也让我对继承关系有了更深的理解。

总的来说,这段代码不仅仅是一个简单的例子,更是对我理解Go语言核心原理的一次实践考验。通过不断地写代码和调试,我相信我对这个强大的语言的掌握会越来越深入。

转载地址:http://vdqaz.baihongyu.com/

你可能感兴趣的文章
git clone 出现fatal: unable to access ‘https://github 错误解决方法
查看>>
04_Mysql配置文件(重要参数)
查看>>
python 加密算法及其相关模块的学习(hashlib,RSA,random,string,math)
查看>>
JavaSE总结
查看>>
手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc
查看>>
Python IO编程
查看>>
CSS入门总结
查看>>
使用 TortoiseGit 时,报 Access denied 错误
查看>>
基于 HTML5 WebGL 的污水处理厂泵站自控系统
查看>>
django-表单之模型表单渲染(六)
查看>>
c++之程序流程控制
查看>>
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
查看>>
有道云笔记 同步到我的博客园
查看>>
李笑来必读书籍整理
查看>>
Hadoop(十六)之使用Combiner优化MapReduce
查看>>
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
查看>>
CoreCLR源码探索(八) JIT的工作原理(详解篇)
查看>>
andriod 开发错误记录
查看>>
C语言编译错误列表
查看>>
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
查看>>