每次学习并整理一个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() 就是同名方法,所以调用了TeacherShowB()方法,输出"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中有两个匿名字段personint,匿名字段的名称和类型相同,等价于:

type teacher struct {person personint    intschool string}

跟题2类似,teacher中嵌套了其他结构体(person)。其中teacher就称为外部struct,person就称为内部struct;

下期提问

  1. 下面代码的输出结果?
func hello(n int) {fmt.Println(n)}func main() {n := 5defer hello(n)n = n + 10}

答案及解析将在下期文章中给出,欢迎大家在评论区留言,独乐乐不如众乐乐,交流学习,互相进步


欢迎转发和评论。更多优质原创文章,欢迎关注微信公众号“IYue爱月”。

c++结构体嵌套结构体_Go学习每日一问(13)-结构体嵌套相关推荐

  1. c++ map初始化_Go学习每日一问(18)-map元素查找

    每次学习并整理一个Golang的知识点,每天进步一点点.今天学习下go中的一个知识点:map元素查找 日省吾身 1.下面代码中 A B 两处应该怎么修改才能顺利编译? func main() { va ...

  2. 结构体怎么赋值_Go 经典入门系列 16:结构体

    点击上方蓝色"Go语言中文网"关注,每天一起学 Go 欢迎来到 Golang 系列教程的第 16 个教程. 什么是结构体? 结构体是用户定义的类型,表示若干个字段(Field)的集 ...

  3. c语言 结构体ppt,C语言知识学习结构体.ppt

    C语言知识学习结构体.ppt Chap 9 结构,9.1 输出平均分最高的学生信息 9.2 学生成绩排序 9.3 修改学生成绩,本章要点,什么是结构结构与数组有什么差别 有几种结构的定义形式,它们之间 ...

  4. golang实现将数据库表自动转为结构体的小工具(学习笔记)

    golang实现将数据库表自动转为结构体的小工具 必备条件 代码结构如下 代码详情 config.go init.go tool.go main.go config.json[运行man.go文件的时 ...

  5. C语言学习(九)之结构体

    文章目录 一.结构体基础 1.1 什么是结构体 1.2 建立结构声明 1.3 定义结构变量 1.4 初始化结构 1.5 访问结构成员 1.6 结构的初始化器 二.结构数组 2.1 声明结构数组 三.嵌 ...

  6. Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针

    Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...

  7. swift学习笔记(9)-结构体和类

    结构体和类对比 Swift 中类和结构体有很多共同点.共同处在于: * 定义属性用于存储值 * 定义方法用于提供功能 * 定义下标操作使得可以通过下标语法来访问实例所包含的值 * 定义构造器用于生成初 ...

  8. c++ 结构体初始化_【干货】c语言基础语法——结构体

    1.关于C语言结构体的引入 学习环境搭建1_Linux C语言_嵌入式开发工程师-创客学院​www.makeru.com.cn 在实际问题中有时候我们需要几种数据类型一起来修饰某个变量. 例如一个学生 ...

  9. c语言 结构体_颖儿教你学C语言结构体,全面讲解,让程序小白玩转结构体编程...

    C语言结构体详细教学开始 前面的教程中我们讲解了数组(Array),它是一组具有相同类型的数据的集合.但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号 ...

最新文章

  1. 新手入门深度学习 | 2-3:文本数据建模流程示例
  2. Marketing Cloud里使用了哪个版本的UI5 Odata模型?
  3. 【nodejs原理源码赏析(9)】用node-ssh实现轻量级自动化部署
  4. Ubuntu上面安装Mongo
  5. 阻塞模式下的超时等待
  6. 用VScode写html文件以及调用浏览器运行
  7. LabVIEW升级图像识别功能
  8. 强大的RSS阅读器 Reeder 4 for Mac 4.1.1
  9. JPG图片怎么转换成Word文档
  10. Dev C++源代码未编译
  11. (转自博客园-雲霏霏)5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
  12. android 第三方视频库,android视频播放库
  13. PS_BaseUse_红眼擦拭
  14. subfigure matlab,(转)LaTeX技巧:subfigure排版并排放置两图
  15. selenium之反反爬虫
  16. 基于百度AI做内容审核
  17. java手机震动_Android实现手机震动抖动效果的方法
  18. 【IEEE754制32位浮点数】与十进制相互转换
  19. 问题:虚拟机中CentOS7不能ping通百度解决心得
  20. MySQL创建用户,并赋予表权限

热门文章

  1. 2018年9月杭州云栖大会Workshop - 基于日志的安全分析实战
  2. 2018深圳云栖拉开帷幕,飞天技术汇五大专场邀你参加~
  3. 华为徐直军:以持续创新加快数字化发展
  4. 这 10 个云计算错误,会让你的业务一蹶不振!
  5. 关于区块链,程序员需要了解什么
  6. java传递实例_Java方法的参数传递机制实例详解
  7. python socket能做什么_[python]初探socket
  8. linux远程执行迷路,linux操作系统基础
  9. matlab 向前欧拉公式,向前欧拉公式在Matlab解微分方程初值解的问题
  10. Spring Schema整合Quartz_01