Golang学习路线图:零基础到高薪进阶指南 | 开发者必备(建议收藏)
最新超详细 Golang (Go) 语言学习路线图 | 纯小白零基础到高薪进阶(建议收藏)
Go 语言的确是值得去学习的。
本文收集并结合网络资料,整理了 Go 语言的最全学习路线图,从基础到进阶,如果你打算成为一名 Go 语言的开发者,不管是有基础还是零基础纯小白,那么本文将非常适合你
将为你提供一份完整的Go语言学习路线图,涵盖从零基础到高级开发的各个阶段,帮助你系统性地掌握这门强大的编程语言
⚠️:本文只是 Go 语言学习线路图,带你系统性地掌握 Go 语言,了解应该从哪些方面学习 Go
文末附有完整的学习教程资料、学习线路图,可参考学习
准备
首先,了解 Go 语言,为什么要学习Golang?Go的优势和职业前景?
请移步文章 为什么要学习Golang?Go的优势和职业前景?
阶段一、基础语法(1-2 周)
不管你是学习哪种语言,第一步一定先学习【基础语法】
1. 环境搭建
搭建 go 的编译、开发环境,编写输出 hello word
package main
import (
"fmt"
)
func main(){
fmt.Println("hello world")
}
注意:go 代码编译完成后不需要依赖环境即可一键运行
2. 基础语法
- 命名规则
- 变量与常量
- 基本数据类型
- 运算符
- 流程控制(if/else、switch、for)
- 函数定义与调用
package main
import "fmt"
func main() {
// 变量声明
var name string = "Go"
age := 10 // 类型推断
// 条件语句
if age > 5 {
fmt.Println(name, "is mature")
}else{
fmt.Println(name, "is no mature")
}
// 循环
for i := 0; i < 3; i++ {
fmt.Println(i)
}
// switch
var name = "Go"
switch name {
case "Go":
fmt.Println("name is go")
default:
fmt.Println("no case")
}
}
3. 常用数据结构
- 数组与切片(Array、Slice)
- 映射(Map)
- 结构体(Struct)
package main
type User struct {
Name string
}
func main() {
// 数组;长度为2
var arr [2]string
// 切片;动态数组,自动扩容,容量初始化为 2
var data = make([]string, 0, 2)
// 映射;初始化容量为2
var m = make(map[string]string, 2)
// 结构体
var u User
}
阶段二、核心概念(2-3周)
- 接口与面向组合(Go 没有面向对象的说法)
- 错误处理
- 并发编程(Goroutine + Channel + Sync 标准库)
- 延迟处理(defer)
package main
import (
"math"
)
// Shape 接口,实现该接口,需实现该接口的所有方法
type Shape interface {
Area() float64
}
// Circle 实现了接口 Shape
type Circle struct {
//value float64
Value // 组合结构,相当于把这个结构的所有字段都填充在这里
Radius float64
}
type Value struct {
value float64
}
func (c Circle) Area() float64 {
return math.Pi * c.Radius * c.Radius
}
阶段三、标准库与工具(3-4周)
1. 常用标准库
- fmt - 打印日志 / 字符串格式化
- os/io - 操作文件
- net/http - 网络请求相关
- endcoding/json - json 编解码
- time - 时间相关
- errors - 错误处理
- testing - 单元测试
- math - 数学库
- path/filepath - 文件路径
- strings - 字符串处理
- …..
⚠️:不需要一次性学那么多,建议学一些常用的库,其他的需要的时候在查询用法即可
2. 依赖管理
依赖管理工具:就好比手机的应用市场,需要什么就搜索然后下载安装,类比:
- Centos - yum
- Python - pip
- PHP - Composer
- Java - maven、gradle
- go - go mod
- Mac - brew
go 的依赖管理工具是 go mod
# 在项目下初始化:生成 mod、sum 文件
go mod init
# 整理依赖
go mod tidy
# 下载依赖
go mod download
默认依赖下载安装在全局 $GOPATH 目录下,如果你只想要安装自己的项目下,可以使用 vendor 模式,所有依赖将会下载到项目下的 vendor 目录
3. 测试与性能分析
go 有个默认规则:测试文件名称一般是原文件名称+"_test"
func TestAdd(t *testing.T) {
got := Add(2, 3)
want := 5
if got != want {
t.Errorf("Add(2, 3) = %d; want %d", got, want)
}
}
// 性能测试
func BenchmarkAdd(b *testing.B) {
for i := 0; i < b.N; i++ {
Add(1, 2)
}
}
阶段四、常用框架(4-5周)
1. web 开发
go 编写 web 接口非常快速,几行代码即可开启一个高性能的接口平台
以上两个框架是目前最流行最常用的,学习其中一个即可,大同小异,建议学习 Gin 框架
2. 微服务框架
以上两个框架是目前比较有名的,github star比较多,也可以用一些大厂开源的框架,比如字节跳动的 Kitex、B 站的 Kratos 等 个人比较推荐使用 go-zero,go-zero框架的生态持续不断完善,而且社区非常活跃
以上只是微服务开发脚手架,go 在微服务领域也有很多已经非常成熟的组件框架:
- 服务发现与负载均衡:Consul、Kong
- 注册中心:ETCD
- 链路追踪:Jaeger
- CI/CD:Argo
- 容器部署:Docker
- 容器编排:K8s(很强大,包含服务发现、发展均衡等功能)
- 服务网格:Istio
3. 数据库开发
阶段五、工程化实践(6-8周)
实践才是真理,可以从 github 找一些开源项目学习学习,看看一些优秀的项目是如何编写 go 代码的 参考项目:
阶段六、深入学习(持续学习)
持续学习、学习 go 的原理、源码、性能优化等
- Go 的 GC 原理
- Go 的协程原理:GMP 调度模型
- Go 的源码:如 slice、map、锁、channel、interface、sync 等等
- Go 的性能分析优化:pprof 工具、基准测试、内存管理
- 编译器原理:AST 语法树
结语
Go语言以其简洁、高效和强大的特性,正在成为越来越多开发者的选择。通过这份学习路线图,希望你能系统地掌握Go语言的核心概念和实际应用,最终成为一名优秀的 Gopher。
记住,学习编程语言最好的方式就是不断实践。现在就开始你的Go语言学习之旅吧!
完整线路图
图片来源:https://www.topgoer.com/static/kaiyuan/luxian.png