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

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

点击上方蓝色“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. 必须使用显示初始化;

  2. 不能提供数据类型,编译器会自动推导;

  3. 只能在函数内部使用简短模式;

欢迎在留言区补充!

今天只有一题,来看下:
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 时间点下文末右下角的「在看」,感激,一点小私心。


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



推荐阅读:

非懂不可的Slice(一)

非懂不可的Slice(二)


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


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

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

本文来自:微信公众平台

感谢作者:Golang来啦

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

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

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