大家好,我是菜饼。
老伙计应该都记得我以前说过,建议大家准备面试只主攻Java/C++,不过据我对今年秋招的观察,其实Go已经可以是一个新的选择。相比C++,Go的上手难度更低,而相比Java,Go的相关八股文知识也更少一些,这样面试时聚焦在语言的问题就会少一些,也便于大家准备。
其实之前我在字节实习时,对Go根本一窍不通,作为一个Java选手被迫无缝衔接到Go,入职两天就开始接小需求。
我觉得核心在于快速学习能力。
今天就和大家分享下如何快速入门 Go 语言,以及更加进阶的一些资料分享。
0x01
对于已经掌握过一两门语言的同学来说,其实学一门新的语言是可以非常迅速的。
入门就三步:
- 环境配置
- 语法学习
- 练习
而 Go语言之旅,则在这基础上进一步压缩:
- 在线执行代码,环境都不用配了
- 语法学习和练习融为一体,你只要像打游戏一样通过每一关,就能把 Go 语言学会
以上两个链接内容是一样的,区别只是一个是官网提供,一个是 Go 语言中文网提供。
0x02
点开欢迎,我们可以看到使用界面如下
其实在学习新语言的过程中,快速入门的诀窍就是寻找异同点
也就是将新语言与已有知识的差异和相同找出来
循环
我们都知道,C/C++/Java里,有while和for两种循环
for循环长这样:
for (int i = 0; i < n; i++) {
doSomething(i);
}
但在Go里面,只有for一种循环(while可以用for实现)
for i := 0; i < 10; i++ {
doSomething(i)
}
是不是发现其实很像
我们再看看C/C++/Java的while循环:
while (i < n) {
doSomething(i);
}
Go里面的while循环:
for i < n {
doSomething(i)
}
到这里发现更多规律了吧,其实Go在循环上就是少了(),然后把while合并到for里面而已。
Range
我们知道Java里还可以通过这种方式快速遍历数组内的元素:
int[] arr = new int[10];
for(int value: arr) {
doSomething(value);
}
Go里其实也有类似的办法:
for _, value := range arr {
doSomething(value);
}
这里的_其实是丢弃了索引index的写法,如果需要用到索引,也可以这样写:
for index, value := range arr {
doSomething(index, value);
}
这个教程的每一步都很详细,可以让你轻松掌握最基础的Go知识。
把整个教程认真看一遍,其实花不了很多时间。
而如果去看视频,固然上手难度更低,毕竟有人敲给你看,但所需的时间成本则大大增加。
一个视频往往几十分钟,而讲完Go,又往往要十几个视频。
大家可以自己尝试一下,就知道为什么我至今学习新东西都是优先看文档。
0x03
当然,入门Go语言之后,我们不能一直停留在初学阶段,想要进阶,那么必然就要进一步的理论学习 + 大量实践
因此在自己电脑上装一个编译环境还是必不可少
这里推荐先装一个ToolBox
然后在里面下载GoLand,学生党用学生邮箱就能申请教育版,免费用。
如果搞不定的,也可以用VsCode,网上随便找点安装教程,这里就不赘述了。
0x04
除了对语言层面的深入学习,对语言的应用上也应该横向拓展。
在Github上随便找几个开源的Go项目,比如Web框架,RPC框架,自己本地跑起来,用起来,看看到底咋用的。
进一步就可以看看框架是怎样实现的,比如我之前整理过用Go语言写Web框架的系列文章
0x05
作为程序员,快速学习能力非常核心,适应变化才能快速成长。
而快速掌握一门语言,便是快速学习能力的体现之一。
有一本很经典的书《七周七语言》,既能拓宽视野,又能训练自己的快速学习能力,有兴趣的小伙伴可以去看看。
我是菜饼,我们下期见。