1、编译执行下面代码会出现什么?

package main
var(size :=1024max_size = size*2
)
func main()  {println(size,max_size)
}

解析 考点:变量简短模式 变量简短模式限制: - 定义变量同时显式初始化 - 不能提供数据类型 - 只能在函数内部使用

结果:

syntax error: unexpected :=
2、下面函数有什么问题?
package main
const cl  = 100var bl    = 123func main()  {println(&bl,bl)println(&cl,cl)
}

解析 考点:常量 常量不同于变量的在运行期分配内存,常量通常会被编译器在预处理阶段直接展开,作为指令数据使用,

cannot take the address of cl

3、编译执行下面代码会出现什么?

package mainfunc main()  {for i:=0;i<10 ;i++  {loop:println(i)}goto loop
}

解析 考点:goto goto不能跳转到其他函数或者内层代码

goto loop jumps into block starting at

4、编译执行下面代码会出现什么?

package main
import "fmt"func main()  {type MyInt1 inttype MyInt2 = intvar i int =9var i1 MyInt1 = ivar i2 MyInt2 = ifmt.Println(i1,i2)
}

解析 考点:Go 1.9 新特性 Type Alias 基于一个类型创建一个新类型,称之为defintion;基于一个类型创建一个别名,称之为alias。 MyInt1为称之为defintion,虽然底层类型为int类型,但是不能直接赋值,需要强转; MyInt2称之为alias,可以直接赋值。

结果:

cannot use i (type int) as type MyInt1 in assignment

5、编译执行下面代码会出现什么?

package main
import "fmt"type User struct {
}
type MyUser1 User
type MyUser2 = User
func (i MyUser1) m1(){fmt.Println("MyUser1.m1")
}
func (i User) m2(){fmt.Println("User.m2")
}func main() {var i1 MyUser1var i2 MyUser2i1.m1()i2.m2()
}

解析 考点:Go 1.9 新特性 Type Alias 因为MyUser2完全等价于User,所以具有其所有的方法,并且其中一个新增了方法,另外一个也会有。 但是

i1.m2()

是不能执行的,因为MyUser1没有定义该方法。 结果:

MyUser1.m1
User.m2

6、编译执行下面代码会出现什么?

package mainimport "fmt"type T1 struct {
}
func (t T1) m1(){fmt.Println("T1.m1")
}
type T2 = T1
type MyStruct struct {T1T2
}
func main() {my:=MyStruct{}my.m1()
}

解析 考点:**Go 1.9 新特性 Type Alias ** 是不能正常编译的,异常:

ambiguous selector my.m1

结果不限于方法,字段也也一样;也不限于type alias,type defintion也是一样的,只要有重复的方法、字段,就会有这种提示,因为不知道该选择哪个。 改为:

my.T1.m1()
my.T2.m1()

type alias的定义,本质上是一样的类型,只是起了一个别名,源类型怎么用,别名类型也怎么用,保留源类型的所有方法、字段等。

7、编译执行下面代码会出现什么?

package mainimport ("errors""fmt"
)var ErrDidNotWork = errors.New("did not work")func DoTheThing(reallyDoIt bool) (err error) {if reallyDoIt {result, err := tryTheThing()if err != nil || result != "it worked" {err = ErrDidNotWork}}return err
}func tryTheThing() (string,error)  {return "",ErrDidNotWork
}func main() {fmt.Println(DoTheThing(true))fmt.Println(DoTheThing(false))
}

解析 考点:变量作用域 因为 if 语句块内的 err 变量会遮罩函数作用域内的 err 变量,结果:

<nil>
<nil>

改为:

func DoTheThing(reallyDoIt bool) (err error) {var result stringif reallyDoIt {result, err = tryTheThing()if err != nil || result != "it worked" {err = ErrDidNotWork}}return err
}

8、编译执行下面代码会出现什么?

package mainfunc test() []func()  {var funs []func()for i:=0;i<2 ;i++  {funs = append(funs, func() {println(&i,i)})}return funs
}func main(){funs:=test()for _,f:=range funs{f()}
}

解析 考点:闭包延迟求值 for循环复用局部变量i,每一次放入匿名函数的应用都是想一个变量。 结果:

0xc042046000 2
0xc042046000 2

如果想不一样可以改为:

func test() []func()  {var funs []func()for i:=0;i<2 ;i++  {x:=ifuns = append(funs, func() {println(&x,x)})}return funs
}

9、编译执行下面代码会出现什么?

package mainfunc test(x int) (func(),func())  {return func() {println(x)x+=10}, func() {println(x)}
}func main()  {a,b:=test(100)a()b()
}

解析 考点:闭包引用相同变量 结果:

100
110

10、编译执行下面代码会出现什么?

package mainimport ("fmt"
)func main()  {defer func() {if err:=recover();err!=nil{fmt.Println(err)}else {fmt.Println("fatal")}}()defer func() {panic("defer panic")}()panic("panic")
}

解析 考点:panic仅有最后一个可以被revover捕获 触发panic("panic")后顺序执行defer,但是defer中还有一个panic,所以覆盖了之前的panic("panic")

2020年Go语言有哪些不得不看的最新面试题?相关推荐

  1. 2020年那种语言最受欢迎_2020年15种最佳和最受欢迎的CMS平台(比较)

    2020年那种语言最受欢迎 Are you wondering what CMS platform to use for building your website? 您是否想知道使用什么CMS平台来 ...

  2. C语言2020年作业,2020年c语言上机报告范文【四篇】

    <2020年c语言上机报告范文[四篇]>由会员分享,可在线阅读,更多相关<2020年c语言上机报告范文[四篇](7页珍藏版)>请在人人文库网上搜索. 1.2020 年 c 语言 ...

  3. 想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(一)

    你好,我是阿ken 2021/6/26 第一次优化排版和内容 之后会持续优化修改 ---------------- 版权声明:本文为CSDN博主「请叫我阿ken」的原创文章,遵循CC 4.0 BY-S ...

  4. 视频教程-2020新版C语言程序设计零基础入门小白自学编程-C/C++

    2020新版C语言程序设计零基础入门小白自学编程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/java/python,专注于服务端研发 ...

  5. 想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(十 一)

    大家好,我是阿Ken.很快就已经整理到了第三章~ 对于专升本_计算机文化基础我已经在博客里整理了已经一半多了,希望能够在我整理后能够帮助其他的小伙伴,这月底整理完所有的专升本_计算机文化基础的笔记,感 ...

  6. Android阵营苹果,刚从安卓转到iPhone阵营?那这篇指南你就不得不看了

    原标题:刚从安卓转到iPhone阵营?那这篇指南你就不得不看了 iPhone虽然诞生10周年了,但是很多人之前都是安卓党,从没有用过任何一代的iPhone手机.如果我们在用了好几年安卓手机后突然转移阵 ...

  7. c语言程序设计河北,2020春C语言程序设计赵玲玲单元测试参考答案查询,工程经济与应用...

    所以,读书不要进入这样的状态,要选择看什么书,更要扩大自己的阅读范围,不要只盯着某个类型,或者某个领域的书不放.开放性的思维,需要开放性的阅读.说完了这些读书方法,后我还想再强调一点,读书是种学习,实 ...

  8. ​2018你不得不看的国内CRM软件排行榜

    2018你不得不看的国内CRM软件排行榜 短短几年时间,CRM在中国的发展就已经非常迅猛,现在已经成为了管理软件增长最快的产业.在我们总结的CRM软件排行榜中,腾讯企点的CRM软件赫然摆在前列.而CR ...

  9. 程序员语言也有鄙视链!某美团程序员爆料:筛选简历时,用go语言的基本不看!网友:当韭菜还当出优越感了!...

    程序员使用的语言有鄙视链吗?有人说有,有人说没有.一个美团员工发帖说,筛选简历时用go语言的基本不看.短短一句话,把对go语言的鄙视体现得淋漓尽致,难道go语言真的不如其他语言? 和他一样想法的前阿里 ...

最新文章

  1. 代码谱写传奇,深度揭秘中国开发者现状!
  2. 网狐棋牌(三) 调度引擎初步分析
  3. 为什么WordPress网站应尽量避免使用过多插件
  4. GP学习(七)—Accessing raster workspaces
  5. php yaf 教程,干货:PHP YAF框架实践教程——配置与多模块
  6. MATLAB中的视角处理
  7. lua能在stm32arm上运行吗_IOS App能在Mac运行!苹果这黑科技能撼动微软吗?
  8. 《JAVA设计模式》之中介者模式(Mediator)
  9. 智方8000系汽车配件进销存管理系统 v8.28 bt
  10. SpringBoot2源码笔记
  11. element-ui 下载后本地使用
  12. hive中的distribute by
  13. NSIS 头文件介绍_WordFunc.nsh(3)
  14. Koa2实现电影微信公众号前后端开发学习视频
  15. 电脑默认字体如何进行替换教学
  16. CEF 、chromium源码下载前相关代理配置
  17. 正则表达式匹配字符串(scala)
  18. 元宇宙的起源·你了解多少
  19. java从入门到精通二十三(Servlet)
  20. 风险投资与经营者 分成利润

热门文章

  1. 微信公众平台php自定义菜单,php实现微信公众号创建自定义菜单
  2. 解决mac版SourceTree卡顿
  3. 归并排序算法详解(方法一)之C语言版
  4. Fikkernbsp;你的网站加速利器
  5. 内网穿透远程群晖NAS:映射5000端口实现公网访问群晖 2/6
  6. 小虎卫手机远控效果演示:电脑远程控制手机
  7. Hello MySQL(九)——视图
  8. (转)浅谈风力发电机组齿轮箱
  9. 蜂蜜怎么做线上推广?
  10. 库卡机器人bco运动_东莞市库卡工业机器人维保中心