当前位置: 首页 > 后端技术 > PHP

脉脉网友一道简单的围棋面试题,你能答对吗?

时间:2023-03-29 21:14:48 PHP

大家好,我是炸鱼。前段时间,麦麦在搞一个“我来出一道面试题”的讨论系列,麦麦的一位好友@在宿雾幻运的小冬蓝出了一道围棋题。快来加入建语,为你解答你的答案是否准确,你对知识的掌握程度如何。(大家都说很简单,结果是50票中的50票,错的人多了。。。)围棋题目的题目如下:funcmain(){varnums1[]interface{}nums2:=[]int{1,3,4}num3:=append(nums1,nums2)fmt.Println(len(num3))}请选择程序的运行结果(答案)是什么?答:1;乙:3;C:4;D:编译失败。回答的对象好像是西昌大学的朋友。这里放一张原题图(屏蔽答案,选完选择题再往下看)。如下图所示:程序运行结果:1表示答案为A,输出结果为1,你答对了吗?让我们继续。由于变量num3的长度为1。那么这里其中一个填充的是什么?代码如下:varnums1[]interface{}nums2:=[]int{1,3,4}num3:=append(nums1,nums2)是fmt.Println(num3)的输出1,3,or4?程序运行结果:[[134]]这次你答对了吗?为什么?分析这个围棋题目本来就比较容易被误导,一不小心就选错了。我们来看看append函数的官方定义是什么样子的。函数签名如下:funcappend(slice[]Type,elems...Type)[]Type函数的官方描述是:append函数会将元素附加到切片的末尾。仔细看题目中的代码片段:varnums1[]interface{}nums2:=[]int{1,3,4}num3:=append(nums1,nums2)结合定义,可知即nums2将元素追加到nums1变量的末尾,不会出现变量中的值被拆分单独追加的情况。自然是呼之欲出了,变量num3的长度只会等于1,而这个1就是nums2变量中的元素。非常自然,未经加工。综上所述,这道题逻辑上其实并不复杂。但是在使用Go中的一些东西的时候,很容易因为下意识的理解而出错。你在面试或工作中遇到过这些问题吗?欢迎在评论区留言交流。阅读更多Go想添加箭头语法,这次更像PHP!Go错误处理的新思路?使用左手函数和表达式