大家好,我是煎鱼。

前段时间脉脉在搞一个 “我来出一道面试题” 的讨论系列,其中一位脉友 @在宿雾参观的小冬瓜 出了一道 Go 题目。

来和一起回答回答,看看知识掌握的怎么样。

题目

Go 题目如下:

func main() {var nums1 []interface{}nums2 := []int{1, 3, 4}num3 := append(nums1, nums2)fmt.Println(len(num3))
}

请选择程序的运行结果(答案)是什么?

答案

题主似乎是西昌学院的小伙伴。这里配上原题目的图(挡一下答案,选择题选完再往下看)。

如下图:

程序运行结果:

1

也就是答案是选项一,输出结果是 1。

你答对了吗?我们继续。

既然变量 num3 的长度是 1。那这里 1 个里,塞的是什么。

代码如下:

var nums1 []interface{}nums2 := []int{1, 3, 4}num3 := append(nums1, nums2)fmt.Println(num3)

输出结果是 1,还是 3,还是 4?

程序运行结果:

[[1 3 4]]

这一次你答对了吗?

是为什么呢?

解析

这个 Go 题目,本质上是比较容易被误导,一个不小心就选错了。我们来看看 append 函数的官方定义是怎么样的。

如下函数签名:

func append(slice []Type, elems ...Type) []Type

官方对函数的作用描述是:append 函数会将元素追加到切片的末尾。

再认真看看题目中的代码片段:

var nums1 []interface{}nums2 := []int{1, 3, 4}num3 := append(nums1, nums2)

结合定义,可得知就是会把 nums2 这个元素,追加到 nums1 变量的末尾,并不会出现什么拆开变量内的值分别追加的情况。

自然也就呼之欲出了,变量 num3 的长度只会等于 1,而这个 1 就是 nums2 变量内的元素。非常的纯天然没加工过。

总结

这道题其实从逻辑上来讲并不复杂。但 Go 一些东西在使用时,很容易会因为下意识的理解而导致出错,导致误解。

你在面试或工作中有没有遇到过这些问题呢?欢迎在评论区留言和交流。

更多阅读

  • Go 想要加个箭头语法,这下更像 PHP 了!

  • Go 错误处理新思路?用左侧函数和表达式

关注和加煎鱼微信,

获取一手业内消息和知识,拉你进交流群

脉脉网友出了道 Go 面试题,你能答对吗?相关推荐

  1. 8年测开经验面试28K公司后,吐血整理出1000道高频面试题和答案

    1.python的数据类型有哪些 答:Python基本数据类型一般分为:数字.字符串.列表.元组.字典.集合这六种基本数据类型. 浮点型.复数类型.布尔型(布尔型就是只有两个值的整型).这几种数字类型 ...

  2. Google 15道古怪面试题(有参考答案)

    http://student.csdn.net/mcd/topic/833628/944375 Google的面试题在刁钻古怪方面相当出名,甚至已经有些被神化的味道.这个话题已经探讨过很多次,这里贴出 ...

  3. 最新Google 15道古怪面试题

    Google的面试题在刁钻古怪方面相当出名,甚至已经有些被神化的味道.这个话题已经探讨过很多次,而科技博客BusinessInsider这两天先是贴出15道Google面试题并一一给出了答案,其中不少 ...

  4. springcloud是什么_阿里P8道出,入职阿里必会199道SpringCloud面试题,你能掌握多少?...

    前言 Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 版本,到目前 2020 年 3 月发布 Hoxton.SR3 版本,已经历经了 4 年时间.这 4 年时间里,S ...

  5. 30道Web前端面试题,你能答出多少道?

    如今很多人受到Web前端的诱惑纷纷报名来学Web前端,他们希望自己通过5个月的系统学习就获得能找到一份高工资的Web前端开发工作,但是真的有那么容易吗?你真的有与高工资相对应的能力吗?你想知道自己的技 ...

  6. 精选30道Java笔试题解答

    精选30道Java笔试题解答       都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进 ...

  7. BTA 常问的 Java基础40道常见面试题及详细答案,java初级面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  8. BTA 常问的 Java基础40道常见面试题及详细答案

    最近看到网上流传着,各种面试经验及面试题,往往都是一大堆技术题目贴上去,而没有答案. 为此我业余时间整理了,Java基础常见的40道常见面试题,及详细答案,望各路大牛,发现不对的地方,不吝赐教,留言即 ...

  9. [ZZ]知名互联网公司Python的16道经典面试题及答案

    知名互联网公司Python的16道经典面试题及答案 https://mp.weixin.qq.com/s/To0kYQk6ivYL1Lr8aGlEUw 知名互联网公司Python的16道经典面试题及答 ...

最新文章

  1. Numpy的介绍和优势
  2. JavaScript正则表达式详解(一)正则表达式入门
  3. [HDOJ4006]The kth great number
  4. CF1070L Odd Federalization 高斯消元
  5. Spark _08窄依赖和宽依赖stage
  6. matlab与专业应用,MATLAB应用技术--在电气工程与自动化专业中的应用
  7. 三菱socket通信实例_三菱QUnCPU内置以太网Socket通信(TCP篇)
  8. linux 关闭redis 命令_面试必问的 Redis:RDB、AOF、混合持久化
  9. ssis sql_使用sp_help_revlogin和SSIS传输登录任务将SQL登录名传输到AG的辅助副本
  10. ZT pthread_detach
  11. python 去除panda安装包_沉淀,再出发:python中的pandas包
  12. 第三十八篇、给UITabBar按钮的动画效果
  13. Expected authority at index 7: hdfs://
  14. RS485 Modbus协议解析
  15. IDEA工具-鼠标滚轮调整字体大小
  16. jQuery砸金蛋抽奖活动php源码
  17. 【Pytorch实战4】基于CIFAR10数据集训练一个分类器
  18. 手摸手教你搭建免费图床
  19. 瘟神的尾行 -- Rootkit技术发展史 (转载)
  20. linux中三台主机之间互信,22、linux的ssh互信配置

热门文章

  1. IDEA界面功能释义
  2. Java中字符串比较大小
  3. console、tty、pts、pty、Terminal、Physical console、Virtual console、Pseudo Terminal关系解析...
  4. 畅聊无极限 微微网络电话聊天新玩法
  5. WGS84坐标系经纬度转地心坐标系坐标
  6. COLORCAST free :进入苹果、谷歌、Amazon推荐的Cocos2d-x游戏
  7. ROS报错:CMakeList.txt配置错误——add_dependencies位置错误(难发现)
  8. 基于modprobe_path的内核提权方法
  9. 撤销还是注销,你分得清吗?
  10. Vue专题(一)聊一聊双向绑定