目录

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语言学习之旅吧!

完整线路图

/img/golang-study-roadmap/1.png
Golang学习线路图

图片来源:https://www.topgoer.com/static/kaiyuan/luxian.png

参考资料

Go 语言中文文档

Go 语言圣经

Go 中文社区

Go 标准库