几个golang面试题及解析

马谦马谦马谦 Golang评论1,750字数 709阅读2分21秒阅读模式

一、以下代码的输出内容为

答案

解析

考查defer和panic组合的情况,在有panic时,会先执行defer然后再把恐慌传递出去。

更多相关内容可查看defer常见的坑以及官方文档描述

二、以下代码有什么问题

答案

解析

for循环使用stu遍历时,stu只是一个临时变量,遍历过程中指针地址不变,所以后面的赋值都是指向了同一个内存区域,导致最后所有的信息都一致。

其实这个现象不仅仅存在于go中,c/c++python中也存在,原理也都一样。

修改方案

三、下面的代码会输出什么,并说明原因

答案

解析

第一个循环中的打印是在函数中打印的,i是外部的变量,执行go func(){}后代码不会立即执行,一般当该代码片段被调度器执行的时候,for循环已经全部执行完毕,此时的i为10。所以i会打印10个10,而j则会无序打印1-10。

四、下面代码会输出什么

答案

解析

go中没有继承,只有组合。Teacher中的People是一个匿名对象,通过它调用的函数都是自身的。

 最后更新:2018-5-4
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2018年4月11日14:39:26
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/golang/golang-interview-topic.html
C/C++中struct和class的区别 C/C++

C/C++中struct和class的区别

一、class和struct的区别 C++中class和struct的区别: 继承权限,struct的默认继承权限为public,class的默认继承权限为private。 访问权限,struct的默...
指针和引用的区别 C/C++

指针和引用的区别

区别: 指针是一个变量类型,引用只是一个变量别名。 指针可以不用初始化,引用必须初始化。 指针可以指向空地址,引用不能指向空。 指针初始化后可以修改,引用不能修改。 其他: 引用本质上也是一个指针,内...
多态的原理:vptr指针和vtable虚函数表 C/C++

多态的原理:vptr指针和vtable虚函数表

多态是C++中的重要内容,也是设计模式的基础。 形成多态的几个基本条件为: 继承和虚函数 父类对象指向子类对象 多态形成的原理就是vptr指针和vtable虚函数表,当一个类中有虚函数时,编译器就会自...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证