点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
杭州转凉也太快了,早晨起来都不敢光膀子,连着打了好几个喷嚏.. 你那天气转凉了吗?
看下昨天的题目解析:
1.参考答案及解析:AB。关于 init() 函数有几个需要注意的地方:
init() 函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等;
一个包可以出线多个 init() 函数,一个源文件也可以包含多个 init() 函数;
同一个包中多个 init() 函数的执行顺序没有明确定义,但是不同包的init函数是根据包导入的依赖关系决定的(看下图);
init() 函数在代码中不能被显示调用、不能被引用(赋值给函数变量),否则出现编译错误;
一个包被引用多次,如 A import B,C import B,A import C,B 被引用多次,但 B 包只会初始化一次;
引入包,不可出现死循坏。即 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{5, 6, 7}
7 hello(i...)
8 fmt.Println(i[0])
9}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
如果我的文章对你有所帮助,点赞、转发都是一种支持!
给个[在看],是对四哥最大的支持
有疑问加站长微信联系(非本文作者)