或许有人会好奇,一个Java老油条,为什么突然开始学习Go语言了。
其实问题并不复杂,此前也对于Go语言略有耳闻,了解过docker,哔哩哔哩都有Go语言的身影。
说明Go,有其独特的特点,在某些方面其它语言做不到它的效果。

而一个java老油条如果想要往架构师等方向走,那么自然需要了解Go语言。
我不知道大家怎么理解架构师的职责,我只是根据我的理解,在日常工作中我们会遇到各种场景,然后各种架构,不知道大家是否会好奇,架构师们是如何想到这些架构的?

其实问题并不复杂,架构师们他们只是基于问题的原因和现象,权衡性能业务 最终选择这么设计。

权衡

权衡的前提是你了解真实场景,你有的选择,我不认为自己绝顶聪明。但我知道Go既然有其特点,而我们本身对java就很擅长,那么学习Go语言这件事情是一个投资回报率很高的一门认知,我们也可以从已知的市场来反向推导出Go值得架构师们学习。

这样在遇到真实场景时,你的技能列表里会多一项选择,你了解Go的特点,Go擅长做什么,那么某些场景时,你可以考量用Go来实现。
现在AI这么发达,你可以随便找一个AI 问下Go擅长做什么,你也能很快的了解Go的特点。说到底就是Go值得大家去学习

我是怎么学习Go的

因为我对于java很擅长,包括了解java一些底层的原理,我在学习Go的时候也同样需要了解Go的语法,当然语法只要花点时间就能掌握。
因为我是一个老油条,我是这样思考问题的,我在学习java时,曾经研究过jdk源码,那么Go语言的SDK我自然也是要了解的,我需要快速用Go语言解决问题的能力和Java拉到一个水位线上。至于为什么要学习JDK/SDK的原因,可以看下我下下面的论述:

我知道有很多程序员也经历过换语言的痛苦,痛苦的根源在于你不理解程序员学一门语言需要掌握什么。这种隐晦的“道” 规则、规律。
你可以回想一下自己大学里面,第一次掌握一门编程语言,C语言的课程里教了什么内容。C语言除了语法和本身C语言的特点外,我们还了解C语言SDK中提供的文件、IO、数据库操作、多线程 等,这些呢是我们日常工作中经常用的。

这也是为什么在大学期间我就在研究jdk源代码,多线程原理 等,而作为一个程序员,你连编程语言本身提供的sdk都不了解,这些sdk能帮你解决什么问题你都不去思考,你怎么可能在工作中能利用这些工具帮你解决工作需求。

并不是说我瞧不起哪些推崇学习框架的那批人,而是说,你连语言自带的工具集合都没有熟透,舍本逐目去学更不能提高你解决问题能力的框架。你将会绕一个大弯,最终回到最开始的状态。

Go语言学习计划

下面是整理出来的计划列表,也是此前我种种经历,输入的提示词,让AI帮我整理出来的一份计划,我自己也大致上看了下,我认为这一条正确的路线。
在这个过程中一定要有思考,你需要了解和理解Go语言作者在设计实现这些代码他们的艺术高度,我们要带着疑问去学习,看到什么都需要思考,为什么这样设计,和现有的进行比较,如今AI这么发达,不像以前,当你不知道时,你得去论坛,博客,搜索引擎找资料。你可以问题AI、AI给出的结果不要完全相信,你可以把AI的结果理解为80%是正确的,AI返回的结果不是圣经,它也是人所产生的言论,经过归纳总结的结论,只要是人语言产生的,它本身的特点就是不确定性,带有个人的认知所产生的结果。

📊 Go SDK 按工作频率分级

🔴 第一梯队:每天都写(每一行代码都可能用到)

# 一句话 出镜场景
1 fmt 格式化打印,字符串拼接 打印日志、格式化输出、拼接字符串
2 errors Go 的错误哲学 每个可能出错的函数
3 context 超时、取消、传值 每个 HTTP handler 的第一个参数
4 strings 字符串操作 字符串处理无处不在
5 strconv 字符串 ↔ 数值转换 解析参数、itoa/atoi

🟠 第二梯队:写 HTTP 服务必备

# 一句话 出镜场景
6 net/http HTTP 客户端和服务端 写 API、调接口
7 encoding/json JSON 序列化 REST API 请求/响应
8 io Reader/Writer 接口 所有 I/O 的基础抽象
9 time 时间处理 超时、定时、时间格式化
10 os 文件、环境变量、命令行 读配置、文件操作

🟡 第三梯队:并发 + 数据库 + 工程化

# 一句话 出镜场景
11 sync 锁、WaitGroup、Once 并发安全
12 database/sql 数据库操作 CRUD
13 bytes 字节切片操作 二进制数据、Buffer
14 bufio 缓冲 I/O 大文件读写
15 log / log/slog 日志 结构化日志

🟢 第四梯队:经常用到,但不紧急

# 一句话 出镜场景
16 testing 测试框架 写单测
17 flag 命令行参数 CLI 工具
18 slices 泛型切片操作 排序、查找、去重
19 sort 排序 自定义排序
20 regexp 正则表达式 字符串匹配
21 path/filepath 路径操作 文件路径处理

🔵 第五梯队:深入理解(有空再读)

# 一句话 难度
22 net 底层网络抽象 ⭐⭐⭐
23 sync/atomic 原子操作 ⭐⭐⭐
24 reflect 反射 ⭐⭐⭐⭐
25 runtime 调度、GC ⭐⭐⭐⭐⭐
26 unsafe 绕过类型系统 ⭐⭐⭐⭐⭐

更多推荐