Go 面试每天一篇(第 39 天)
点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
你好哇,欢迎来答题,一起来看下
1.关于异常的触发,下面说法正确的是?
<ul class="list-paddingleft-2"><li>A. 空指针解析;
</li><li>B. 下标越界;
</li><li>C. 除数为0;
</li><li>D. 调用panic函数;
</li></ul>参考答案及解析:ABCD。
2.下面代码输出什么?
<pre class="has"><code class="language-javascript">1func main() { 2 x := []string{"a", "b", "c"} 3 for v := range x { 4 fmt.Print(v) 5 } 6} </code></pre>参考答案及解析:012。注意区别下面代码段:
<pre class="has"><code class="language-javascript">1func main() { 2 x := []string{"a", "b", "c"} 3 for _, v := range x { 4 fmt.Print(v) //输出 abc 5 } 6} </code></pre>3.下面这段代码能否编译通过?如果通过,输出什么?
<pre class="has"><code class="language-javascript"> 1type User struct{} 2type User1 User 3type User2 = User 4 5func (i User1) m1() { 6 fmt.Println("m1") 7} 8func (i User) m2() { 9 fmt.Println("m2") 10} 11 12func main() { 13 var i1 User1 14 var i2 User2 15 i1.m1() 16 i2.m2() 17} </code></pre>参考答案及解析:能,输出<code>m1 m2</code>,第 2 行代码基于类型 User 创建了新类型 User1,第 3 行代码是创建了 User 的类型别名 User2,注意使用 = 定义类型别名。因为 User2 是别名,完全等价于 User,所以 User2 具有 User 所有的方法。但是 i1.m1() 是不能执行的,因为 User1 没有定义该方法。
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
<ul class="list-paddingleft-2"><li>A. 无缓冲的channel是默认的缓冲为1的channel;
</li><li>B. 无缓冲的channel和有缓冲的channel都是同步的;
</li><li>C. 无缓冲的channel和有缓冲的channel都是非同步的;
</li><li>D. 无缓冲的channel是同步的,而有缓冲的channel是非同步的;
</li></ul>2.下面代码是否能编译通过?如果通过,输出什么?
<pre class="has"><code class="language-javascript"> 1func Foo(x interface{}) { 2 if x == nil { 3 fmt.Println("empty interface") 4 return 5 } 6 fmt.Println("non-empty interface") 7} 8func main() { 9 var x *int = nil 10 Foo(x) 11} </code></pre>3.下面代码输出什么?
<pre class="has"/>
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
<blockquote>所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
</blockquote>
推荐阅读:
如果我的文章对你有所帮助,点赞、转发都是一种支持!
您可能感兴趣的文章:
Go语言 零基础入门到精通项目实战
Go 语言进阶教程
Go 面试每天一篇(第 39 天)
【七天从零实现ORM框架】Day02:database/sql基础
Golang面试题解析(四)
JavaScript关于数组的方法有哪些不同之处?
Go语言爱好者周刊:第 78 期 — 这道关于 goroutine 的题
Go语言发展历史、核心、特性及学习路线
php调取摄像头实现拍照功能的方法
2018年最全Go语言教程零基础入门到进阶实战视频