博客
关于我
go语言中类的继承和方法的使用
阅读量:623 次
发布时间: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/

你可能感兴趣的文章
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
MySQL 加锁处理分析
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 参数 innodb_flush_log_at_trx_commit
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>
MySql 同一个列中的内容进行批量改动
查看>>
MySQL 命令和内置函数
查看>>
MySQL 和 PostgreSQL,我到底选择哪个?
查看>>
mysql 四种存储引擎
查看>>
mysql 在windons下的备份命令
查看>>
MySQL 在并发场景下的问题及解决思路
查看>>
MySQL 在控制台插入数据时,中文乱码问题的解决
查看>>
MySQL 基础架构
查看>>
MySQL 基础模块的面试题总结
查看>>
MySQL 处理插入重主键唯一键重复值办法
查看>>