几个golang面试题及解析

娱乐新闻 2019-08-08200未知admin

  考查defer和panic组合的情况,在有panic时,会先执行defer然后再把恐慌传递出去。

  for循环使用stu遍历时,stu只是一个临时变量,遍历过程中指针地址不变,所以后面的赋值都是指向了同一个内存区域,导致最后所有的信息都一致。

  其实这个现象不仅仅存在于go中,c/c++和python中也存在,原理也都一样。

  第一个循环中的打印是在函数中打印的,i是外部的变量,执行go func(){}后代码不会立即执行,一般当该代码片段被调度器执行的时候,for循环已经全部执行完毕,此时的i为10。所以i会打印10个10,而j则会无序打印1-10。

  go中没有继承,只有组合。Teacher中的People是一个匿名对象,通过它调用的函数都是自身的。

  考查defer和panic组合的情况,在有panic时,会先执行defer然后再把恐慌传递出去。

  for循环使用stu遍历时,stu只是一个临时变量,遍历过程中指针地址不变,所以后面的赋值都是指向了同一个内存区域,导致最后所有的信息都一致。

  其实这个现象不仅仅存在于go中,c/c++和python中也存在,原理也都一样。

  第一个循环中的打印是在函数中打印的,i是外部的变量,执行go func(){}后代码不会立即执行,一般当该代码片段被调度器执行的时候,for循环已经全部执行完毕,此时的i为10。所以i会打印10个10,而j则会无序打印1-10。

  go中没有继承,只有组合。Teacher中的People是一个匿名对象,通过它调用的函数都是自身的。

Copyright © 2010-2020 消息源网 版权所有  

联系QQ:1352848661