c++结构体嵌套结构体_Go学习每日一问(13)-结构体嵌套
每次学习并整理一个Golang的知识点,每天进步一点点。今天学习一个go结构体嵌套的知识点。
日省吾身
1.下面这段代码的输出结果?
func main() { a := -7 b := +7 fmt.Printf("%+d %+d", a, b)}
- A. -7 +7
- B. +7 +7
- C. 7 7
- D. +7 -7
2.判断下面代码是否能正常执行?如果可以,写出输出结果?
type People struct{}func (p *People) ShowA() { fmt.Println("showA") p.ShowB()}func (p *People) ShowB() { fmt.Println("showB")}type Teacher struct { People}func (t *Teacher) ShowB() { fmt.Println("teacher showB")}func main() { t := Teacher{} t.ShowB() t.ShowA()}
要有自己的思考哦
思考后看下方答案…
答疑解惑
参考答案:
1. A %+d 表示带符号的整型
%d表示输出十进制数字,+表示输出数值的符号; fmt.Printf("%+d", 255)结果输出为:+255
2. 输出结果见下: 知识点:结构体嵌套
teacher showBshowAshowB
- 结构体Teacher中又嵌套了另外一个结构体:People;在嵌套结构体中,People 称为内部类型,Teacher 称为外部类型;通过嵌套,内部类型的属性、方法,可以为外部类型所有,就好像是外部类型自己的一样。此外,外部类型还可以定义自己的属性和方法,当外部类型方法名与内部类型相同时,内部类型的方法就会被“屏蔽”,优先使用外部类型自己的方法。这个例子中的 ShowB() 就是同名方法,所以调用了Teacher的ShowB()方法,输出"teacher showB”;
- t.ShowA(),由于Teacher 没有自己的 ShowA()方法,所以调用内部类型 People 的同名方法,而People的ShowA()方法中又调用了自己的ShowB()方法,所以t.ShowA()的输出结果为:showA showB;
以上,你做对了吗?
其他相关答案或补充知识点,欢迎在评论区留言补充!
扩展阅读
匿名字段
结构体中的字段可以不给名称,这时称为匿名字段。匿名字段的名称强制和类型相同。例如:
type person struct {name stringage int}type teacher struct {personintschool string}
上面teacher中有两个匿名字段person和int,匿名字段的名称和类型相同,等价于:
type teacher struct {person personint intschool string}
跟题2类似,teacher中嵌套了其他结构体(person)。其中teacher就称为外部struct,person就称为内部struct;
下期提问
- 下面代码的输出结果?
func hello(n int) {fmt.Println(n)}func main() {n := 5defer hello(n)n = n + 10}
答案及解析将在下期文章中给出,欢迎大家在评论区留言,独乐乐不如众乐乐,交流学习,互相进步。
欢迎转发和评论。更多优质原创文章,欢迎关注微信公众号“IYue爱月”。
c++结构体嵌套结构体_Go学习每日一问(13)-结构体嵌套相关推荐
- c++ map初始化_Go学习每日一问(18)-map元素查找
每次学习并整理一个Golang的知识点,每天进步一点点.今天学习下go中的一个知识点:map元素查找 日省吾身 1.下面代码中 A B 两处应该怎么修改才能顺利编译? func main() { va ...
- 结构体怎么赋值_Go 经典入门系列 16:结构体
点击上方蓝色"Go语言中文网"关注,每天一起学 Go 欢迎来到 Golang 系列教程的第 16 个教程. 什么是结构体? 结构体是用户定义的类型,表示若干个字段(Field)的集 ...
- c语言 结构体ppt,C语言知识学习结构体.ppt
C语言知识学习结构体.ppt Chap 9 结构,9.1 输出平均分最高的学生信息 9.2 学生成绩排序 9.3 修改学生成绩,本章要点,什么是结构结构与数组有什么差别 有几种结构的定义形式,它们之间 ...
- golang实现将数据库表自动转为结构体的小工具(学习笔记)
golang实现将数据库表自动转为结构体的小工具 必备条件 代码结构如下 代码详情 config.go init.go tool.go main.go config.json[运行man.go文件的时 ...
- C语言学习(九)之结构体
文章目录 一.结构体基础 1.1 什么是结构体 1.2 建立结构声明 1.3 定义结构变量 1.4 初始化结构 1.5 访问结构成员 1.6 结构的初始化器 二.结构数组 2.1 声明结构数组 三.嵌 ...
- Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针
Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...
- swift学习笔记(9)-结构体和类
结构体和类对比 Swift 中类和结构体有很多共同点.共同处在于: * 定义属性用于存储值 * 定义方法用于提供功能 * 定义下标操作使得可以通过下标语法来访问实例所包含的值 * 定义构造器用于生成初 ...
- c++ 结构体初始化_【干货】c语言基础语法——结构体
1.关于C语言结构体的引入 学习环境搭建1_Linux C语言_嵌入式开发工程师-创客学院www.makeru.com.cn 在实际问题中有时候我们需要几种数据类型一起来修饰某个变量. 例如一个学生 ...
- c语言 结构体_颖儿教你学C语言结构体,全面讲解,让程序小白玩转结构体编程...
C语言结构体详细教学开始 前面的教程中我们讲解了数组(Array),它是一组具有相同类型的数据的集合.但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号 ...
最新文章
- 新手入门深度学习 | 2-3:文本数据建模流程示例
- Marketing Cloud里使用了哪个版本的UI5 Odata模型?
- 【nodejs原理源码赏析(9)】用node-ssh实现轻量级自动化部署
- Ubuntu上面安装Mongo
- 阻塞模式下的超时等待
- 用VScode写html文件以及调用浏览器运行
- LabVIEW升级图像识别功能
- 强大的RSS阅读器 Reeder 4 for Mac 4.1.1
- JPG图片怎么转换成Word文档
- Dev C++源代码未编译
- (转自博客园-雲霏霏)5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
- android 第三方视频库,android视频播放库
- PS_BaseUse_红眼擦拭
- subfigure matlab,(转)LaTeX技巧:subfigure排版并排放置两图
- selenium之反反爬虫
- 基于百度AI做内容审核
- java手机震动_Android实现手机震动抖动效果的方法
- 【IEEE754制32位浮点数】与十进制相互转换
- 问题:虚拟机中CentOS7不能ping通百度解决心得
- MySQL创建用户,并赋予表权限
热门文章
- 2018年9月杭州云栖大会Workshop - 基于日志的安全分析实战
- 2018深圳云栖拉开帷幕,飞天技术汇五大专场邀你参加~
- 华为徐直军:以持续创新加快数字化发展
- 这 10 个云计算错误,会让你的业务一蹶不振!
- 关于区块链,程序员需要了解什么
- java传递实例_Java方法的参数传递机制实例详解
- python socket能做什么_[python]初探socket
- linux远程执行迷路,linux操作系统基础
- matlab 向前欧拉公式,向前欧拉公式在Matlab解微分方程初值解的问题
- Spring Schema整合Quartz_01