几个golang面试题及解析

马谦马谦马谦 2018年4月11日14:39:26 发表评论
文章最后编辑于:2018-5-4 23:22:58

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

答案

解析

考查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是一个匿名对象,通过它调用的函数都是自身的。

本文共执行47次查询,耗时0.776秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: