点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
从昨天的答题留言来看,@十二 同学三道题目都答对了,特别棒!鼓励其他同学参与答题,加油!
公布下昨天题目的答案,题目见昨天的文章。
1.
参考答案及解析:不能通过编译,new([]int) 之后的 list 是一个 *[]int 类型的指针,不能对指针执行 append 操作。可以使用 make() 初始化之后再用。同样的,map 和 channel 建议使用 make() 或字面量的方式初始化,不要用 new() 。
2.
参考答案及解析:不能通过编译。append() 的第二个参数不能直接使用 slice,需使用 … 操作符,将一个切片追加到另一个切片上:append(s1,s2…)。或者直接跟上元素,形如:append(s1,1,2,3)。
关于 slice 的用法可以看下文末的推荐阅读。
3.
参考答案及解析:不能通过编译。这道题的主要知识点是变量声明的简短模式,形如:x := 100。但这种声明方式有限制:
必须使用显示初始化;
不能提供数据类型,编译器会自动推导;
只能在函数内部使用简短模式;
欢迎在留言区补充!
今天只有一题,来看下:
1.下面这段代码能否通过编译?不能的话,原因是什么?如果通过,输出什么?
1func main() {
2 sn1 := struct {
3 age int
4 name string
5 }{age: 11, name: "qq"}
6 sn2 := struct {
7 age int
8 name string
9 }{age: 11, name: "qq"}
10
11 if sn1 == sn2 {
12 fmt.Println("sn1 == sn2")
13 }
14
15 sm1 := struct {
16 age int
17 m map[string]string
18 }{age: 11, m: map[string]string{"a": "1"}}
19 sm2 := struct {
20 age int
21 m map[string]string
22 }{age: 11, m: map[string]string{"a": "1"}}
23
24 if sm1 == sm2 {
25 fmt.Println("sm1 == sm2")
26 }
27}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:对大部分人来说,初学一门新的语言,不管是Java、Python 还是 Go,初始阶段最大的困惑可能就是不知道从何处下手。之前就在思考这个问题,所以打算从面试题入手,由点及面去学,进而对 Go 能有一个很好的掌握,就有了这一系列面试题文章,虽然才刚开始,但我有信心做下去并且做好!一件利他利己的事儿,提升自己的同时也希望可以帮助更多的人!
pps:如果觉得这种方式不错且文章对你有一点帮助,帮忙花 1s 时间点下文末右下角的「在看」,感激,一点小私心。
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
如果我的文章对你有所帮助,点赞、转发都是一种支持!
给个[在看],是对四哥最大的支持