如何快速学习一门语言,以Go语言为例

1,491 阅读2分钟

大家好,我是菜饼。

老伙计应该都记得我以前说过,建议大家准备面试只主攻Java/C++,不过据我对今年秋招的观察,其实Go已经可以是一个新的选择。相比C++Go的上手难度更低,而相比JavaGo的相关八股文知识也更少一些,这样面试时聚焦在语言的问题就会少一些,也便于大家准备。

其实之前我在字节实习时,对Go根本一窍不通,作为一个Java选手被迫无缝衔接到Go,入职两天就开始接小需求。

我觉得核心在于快速学习能力。

今天就和大家分享下如何快速入门 Go 语言,以及更加进阶的一些资料分享

0x01

对于已经掌握过一两门语言的同学来说,其实学一门新的语言是可以非常迅速的。

入门就三步:

  • 环境配置
  • 语法学习
  • 练习

Go语言之旅,则在这基础上进一步压缩:

  • 在线执行代码,环境都不用配了
  • 语法学习和练习融为一体,你只要像打游戏一样通过每一关,就能把 Go 语言学会

tour.go-zh.org/list tour.studygolang.com/list

以上两个链接内容是一样的,区别只是一个是官网提供,一个是 Go 语言中文网提供。

0x02

点开欢迎,我们可以看到使用界面如下

其实在学习新语言的过程中,快速入门的诀窍就是寻找异同点

也就是将新语言与已有知识的差异和相同找出来

循环

我们都知道,C/C++/Java里,有whilefor两种循环

for循环长这样:

for (int i = 0; i < n; i++) {
    doSomething(i);
}

但在Go里面,只有for一种循环(while可以用for实现)

for i := 0; i < 10; i++ {
    doSomething(i)
}

是不是发现其实很像

我们再看看C/C++/Javawhile循环:

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

www.jetbrains.com/toolbox-app…

然后在里面下载GoLand,学生党用学生邮箱就能申请教育版,免费用。

如果搞不定的,也可以用VsCode,网上随便找点安装教程,这里就不赘述了。

0x04

除了对语言层面的深入学习,对语言的应用上也应该横向拓展。

Github上随便找几个开源的Go项目,比如Web框架,RPC框架,自己本地跑起来,用起来,看看到底咋用的。

进一步就可以看看框架是怎样实现的,比如我之前整理过用Go语言写Web框架的系列文章

0x05

作为程序员,快速学习能力非常核心,适应变化才能快速成长。

而快速掌握一门语言,便是快速学习能力的体现之一。

有一本很经典的书《七周七语言》,既能拓宽视野,又能训练自己的快速学习能力,有兴趣的小伙伴可以去看看。

我是菜饼,我们下期见。