Go 面试每天一篇(第 9 天)

Golang来啦 · · 2586 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

点击上方蓝色“Golang来啦”关注我哟

加个“星标”,天天 15 分钟,一起学 Go

杭州转凉也太快了,早晨起来都不敢光膀子,连着打了好几个喷嚏.. 你那天气转凉了吗?

看下昨天的题目解析:
1.参考答案及解析:AB。关于 init() 函数有几个需要注意的地方:

  1. init() 函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等;

  2. 一个包可以出线多个 init() 函数,一个源文件也可以包含多个 init() 函数;

  3. 同一个包中多个 init() 函数的执行顺序没有明确定义,但是不同包的init函数是根据包导入的依赖关系决定的(看下图);

  4. init() 函数在代码中不能被显示调用、不能被引用(赋值给函数变量),否则出现编译错误;

  5. 一个包被引用多次,如 A import B,C import B,A import C,B 被引用多次,但 B 包只会初始化一次;

  6. 引入包,不可出现死循坏。即 A import B,B import A,这种情况编译失败;

2.答案及解析:B。这道题目里面,是将 hello() 赋值给变量 h,而不是函数的返回值,所以输出 not nil。

3.参考答案及解析:编译失败。考点:类型选择,类型选择的语法形如:i.(type),其中 i 是接口,type 是固定关键字,需要注意的是,只有接口类型才可以使用类型选择。看下关于接口的文章。

欢迎在留言区补充!

看下今天的题目:
1.关于channel,下面语法正确的是()

  • A. var ch chan int

  • B. ch := make(chan int)

  • C. <- ch

  • D. ch <-

2.下面这段代码输出什么?

  • A.0

  • B.1

  • C.Compilation error  

1type person struct {  
2    name string
3}
4
5func main() {  
6    var m map[person]int
7    p := person{"mike"}
8    fmt.Println(m[p])
9}

3.下面这段代码输出什么?

  • A.18

  • B.5

  • C.Compilation error  

1func hello(num ...int) {  
2    num[0] = 18
3}
4
5func main() {  
6    i := []int{567}
7    hello(i...)
8    fmt.Println(i[0])
9}


答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点

ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!

所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!


推荐阅读:

Go 语言接口详解(一)

Go 语言接口详解(二)


如果我的文章对你有所帮助,点赞、转发都是一种支持!

给个[在看],是对四哥最大的支持



有疑问加站长微信联系(非本文作者)

本文来自:微信公众平台

感谢作者:Golang来啦

查看原文:Go 面试每天一篇(第 9 天)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2586 次点击  ∙  2 赞  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传