大家好,我是菜饼。
老伙计应该都记得我以前说过,建议大家准备面试只主攻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
作为程序员,快速学习能力非常核心,适应变化才能快速成长。
而快速掌握一门语言,便是快速学习能力的体现之一。
有一本很经典的书《七周七语言》,既能拓宽视野,又能训练自己的快速学习能力,有兴趣的小伙伴可以去看看。
我是菜饼,我们下期见。