【个人总结】Go 学习路线

不知不觉间,我居然已经八个月没有写过文章了!主要原因是这一段时间都在上班,每天下班就只想睡觉,自然没有时间写文章了。

依稀记得去年开始学 go 的时候,总是听见很多诸如“后端最好先学 Java”之类的论断,而我在过去的半年中,拿到了字节跳动、小红书、搜狐等公司的后端/全栈开发 offer,腾讯进了终面但被我主动拒掉,要是当初学的 Java,现在说不定还没开始投简历呢。

我个人认为学 go 有如下好处:

  • 语法极其简单,基本不需要花多少时间在语法学习上,同时对比 Java,没有那么多非学不可的框架生态,这对于 ACM 退役选手和那些由于信息差没有很早开始准备的同学来说,是很友好的。
  • go 天生就带着开源社区的基因,学 go 的同学会与 github 等开源社区打更多的交道。
  • go 相对 Java 而言没那么卷,更好找工作,岗位平均薪资更高,同时一般都是比较前沿的岗位,上班体验更好。
  • ……

以下是我个人总结的 go 学习路线,日后可能还会更新。对于标注“可选”的部分,可以根据自己的时间决定是否学习。

Go 安装与开发环境

首先为了能在终端正常访问 google 及 github 相关网站,请自行科学上网并开启 TUN/虚拟网卡模式。

由于大部分人在刚接触编程时肯定是使用 Windows 系统,那这里就以 Windows 举例,MacOS 和 Linux 读者可以自己搜索。

首先到 go 官方下载处下载最新版本 go 的 msi 文件:All releases – The Go Programming Language,安装过程中询问是否将 go 添加到 PATH 环境变量时,请记得勾选添加。

IDE 可以选择 Goland 或 vscode 及其类似物。在 vscode 中下载官方的 go 插件:

在终端中输入 go version ,显示以下信息则为安装完成:

若提示没有 go 命令,请检查是否将 go 正确添加到 PATH 环境变量。

在空目录下,打开终端,执行 go mod init hello

这个命令的作用是新建一个 go 项目。命令末尾的 hello 代表这个项目的包名。在实际开发场景中,我们一般用仓库名命名,比如 github.com/AelionGo/Aelion

此时观察到空目录下生成了一个 go.mod 文件,内容如图:

里面展示了项目的包名和当前使用的 go 版本。在同目录下新建一个 main.go 文件,写入以下代码:

package main

import "fmt"

func main() {
	fmt.Println("Hello, World!")
}

终端执行 go run .

至此,go 环境配置就完成了。

基础语法

go 的语法非常简单,这是 go 独特的设计哲学:大道至简。正因为 go 语法简单且语法糖极少,go 也是最适合 ai 编程的语言,多个相关测试都表明 ai 生成 go 代码的质量是所有语言中最好的。

学习基础语法大约花费一周或者两周的时间,其中重点学习以下内容:

  • go 的面向对象相关设计。包括“组合优于继承”、接口的“鸭子方法”等。
  • 包管理。go.mod 和 go.sum 的作用、如何将变量或方法导出,如何引用其他文件或其他目录的对象,internal 包的作用等。
  • 重中之重,go 的并发模型,即 GMP 抢占式调度(CSView计算机招聘知识分享),熟练使用 goroutine 和 channel,能用 channel、select等工具实现大部分并发场景。

推荐通过 go 官方的 tour 进行学习:Go 语言之旅

在看完 tour 后,为了更加熟悉语法,可以去刷几道 leetcode ,或者做一个小的且只涉及语法的项目:使用 Go 语言实现二叉搜索树

(可选)进阶/面试

如果你对这门语言本身很感兴趣,想要更深入的学习,可以阅读以下资料。也可以在后面的部分学完后回过头看。

Go 语言设计与实现 | Go 语言设计与实现

Go常见面试题【由浅入深】2022版 – 知乎

TonyBai · Go 语言进阶课

通用开发技能

考虑到很多同学是像我一样,将 go 作为自己的第一门开发语言的。那么假定你目前没有任何的通用开发技能的基础,你需要学习以下内容:

Go 框架学习

为了开发出一个 web 应用,我们需要知道一些 http、orm 等框架如何使用。在这里我们学习最经典与基础的 gin 和 gorm 的使用。

快速入门 | Gin Web Framework

GORM 指南 | GORM – The fantastic ORM library for Golang, aims to be developer friendly.

此处没有必要太过详细的研究文档,只需要能大概了解如何使用即可。在粗略学习后,可以开始编写你的第一个完整的 web 项目了!可以跟着这个小项目实现一下:HTTP 应用 – 地鼠文档

(可选)动手实现 http 框架和 orm 框架

自己动手写一个 http 框架或 orm 框架并不是特别难的事情,还有助于你更深入的理解框架原理与工作机制。

7天用Go从零实现Web框架Gee教程 | 极客兔兔

7天用Go从零实现ORM框架GeeORM | 极客兔兔

你刚刚浪费了人生中宝贵的几分钟。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇