几个 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:
确定

拖动滑块以完成验证