跳至主要內容

golang学习路线

王中阳约 2428 字大约 8 分钟

前言

为了方便大家能够按顺序系统的进行学习,我会将相关文章进行梳理。

让我们手牵着手,一起走,少走弯路,又快又好的成为Gopher,Let's Go。

总体路线

概览

首先分享了我的学习经验:讲一讲Go语言为什么值得学习?以及我是如何高效学习Go语言的。

然后就是刻意练习了,需要大家和我一样,坚持每天手撸代码,多敲多想:

  • 通过对Go基础篇的学习,可以从Go小白升级成为能用Go撸代码的gopher。

  • 通过对Go进阶篇的学习,可以从Go初级程序员升级为Go中级工程师。

  • 通过Go JAVA类比篇的学习,可以更好的理解Go的优势,更好的理解Go的设计思想。

  • 框架篇 不仅对比了目前主流的Go框架,还重点讲解了GoFrame框架相关的知识点。

GoFrame是类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架,非常值得大家学习。

最后,会通过几篇应用实践的文章收尾,带大家体验一下用Go开发企业项目的快乐。

说明:下面的文章没有标注作者信息的是我的文章;标明作者的都是优秀创作者投稿,经过筛选的优质文章。

为什么学Go?

# Go语言为什么值得学习?open in new window 作者:王中阳

# Go 在云原生时代的优势open in new window 作者:# 宇宙之一粟open in new window

学习经验分享

# 回顾一下我的Go学习之旅 | Go 主题月open in new window 作者:王中阳

# [译]如何真正学习Go 语言open in new window 作者:# 宇宙之一粟open in new window

# 写Go最近踩的坑 | 日志、内聚和复用、gjson、调整心态open in new window

golang筑基之路

入门视频及系列教程

数据类型

#【Go基础】编译、变量、常量、基本数据类型、字符串open in new window

# Go const和iota 使用实战open in new window

# Go基础数据类型使用实战:int float boolopen in new window

切片

# Go slice切片详解和实战open in new window

# Go slice切片详解和实战(2) make append copyopen in new window

# 深入理解 slice 非常硬核!open in new window 作者:# 二牛QAQopen in new window

数组

# Go 数组详解和实战open in new window

# Go map详解和实战open in new window

rune

# Go rune详解和实战open in new window

指针

# Go pointer & switch fallthrough 详解和实战open in new window

流程控制

# go if判断和for循环实战 goto使用的那些坑open in new window

函数

# Go 函数详解 func 匿名函数 闭包open in new window

ORM

# GORM入门指南open in new window 作者

# Go 语言中操作 MySQL 数据库open in new window 作者:# 宇宙之一粟open in new window

# golang 基于 mysql 实现分布式读写锁open in new window 作者:# 二牛QAQopen in new window

部署

# 如何优雅的通过Shell脚本一键部署GO项目到服务器open in new window

扩展包

# Go时间包jsontime深入浅出 如何优雅的对时间进行格式化 |Go 主题月open in new window

# Go语言json包的使用技巧open in new window

# Go 入门很简单:如何在 Go 中使用日志包open in new window 作者:# 宇宙之一粟open in new window

重要概念

# Go开发web必懂的概念和底层原理,通过对比的方式让大家更好的理解 | Go主题月open in new window

golang结丹之路

协程

# 什么时候用Goroutine?什么时候用Channel?open in new window

# Goroutine就是协程:进程 线程 协程 各自的概念以及三者的对比分析open in new window

RPC

# Go RPC入门指南1:RPC的使用边界在哪里?如何实现跨语言调用?open in new window

反射

# Golang的反射reflect深入理解和示例open in new window 作者:吴德宝AllenWuopen in new window

# Go语言中的反射open in new window 作者:任沫open in new window

interface

# Golang interface接口深入理解open in new window 作者:吴德宝AllenWuopen in new window

错误处理

# Go函数并发情况的错误处理open in new window 作者:Mastersopen in new window

并发安全

# Go源码解读-sync.Map的实现open in new window 作者:Mastersopen in new window

部署

# Go打包 部署 优雅的把Go项目部署到Linux服务器open in new window

规范&技巧

# Go语言中比较优雅的写法 | 硬核!open in new window

# 爆肝分享两千字Go编程规范open in new window

# Go开发技巧和踩坑分享 | 代码结构 调试技巧 配置文件 元数据open in new window

Go对比PHP/JAVA/C

# Java VS Go 还在纠结怎么选吗,(资深后端4000字带你深度对比)open in new window 作者:TodoCoderopen in new window

# 为什么我觉得GoFrame的garray比PHP的array还好用?open in new window

# GoFrame gset使用入门 | 对比PHP、Java、Redisopen in new window

# 如何在 Go 代码中运行 C 语言代码open in new window 作者:# 宇宙之一粟open in new window

好用的扩展包

# GO语言框架中如何快速集成日志模块open in new window 作者:Mastersopen in new window

# Go Web 编程入门:Go pongo2 模板引擎open in new window 作者:# 宇宙之一粟open in new window

# 使用 Gorilla Mux 和 CockroachDB 编写可维护 RESTful APIopen in new window 作者:# 宇宙之一粟open in new window

设计模式

# golang 设计模式-单例模式open in new window 作者:# 二牛QAQopen in new window

框架篇

学哪个框架?

# Go主流框架对比:Gin Echo Beego Irisopen in new window

# 非常适合PHP/JAVA同学使用的GO框架:GoFrameopen in new window

# 12个值得一看的Go开源项目/框架open in new window 作者:ReganYueopen in new window

Gin框架&中间件

# Go gin框架封装中间件之1:用户角色权限管理中间件open in new window

# Go gin框架封装中间件之2:操作日志中间件open in new window

GORM

# Go GORM是时候升级新版本了 2.0新特性介绍(1)open in new window

# Go GORM是时候升级新版本了 2.0新特性介绍(2)| Go主题月open in new window

Echo

# 回声嘹亮 之 Go 的 Echo 框架指南 —— 上手初体验open in new window 作者:# 宇宙之一粟open in new window

Beego

# go-web框架-beego的使用open in new window 作者:# jy白了个白open in new window

GoFrame

数据结构

# 为什么我觉得GoFrame的garray比PHP的array还好用?open in new window

# GoFrame garray使用实践open in new window

# GoFrame gset使用入门 | 对比PHP、Java、Redisopen in new window

# GoFrame gset使用实践 | 交差并补集open in new window

# GoFrame gset使用技巧总结 | 出栈、子集判断、序列化、遍历修改open in new window

# GoFrame glist 基础使用和自定义遍历open in new window

# GoFrame gmap详解 hashmap、listmap、treemap使用技巧open in new window

# GoFrame gtree 使用入门 | 养成读源码的好习惯open in new window

类型转换

# GoFrame代码优化:使用gconv类型转换 避免重复定义mapopen in new window

通用变量

# GoFrame 通用类型变量gvar | 对比 interface{}open in new window

数据校验

# GoFrame数据校验之校验对象 | 校验结构体open in new window

# GoFrame数据校验之校验结果 | Error接口对象open in new window

# GoFrame如何实现顺序性校验open in new window

错误处理

# GoFrame错误处理的常用方法&错误码的使用open in new window

上下文

# GoFrame 如何优雅的共享变量 | Context的使用open in new window

# Go 并发编程基础:什么是上下文open in new window 作者:# 宇宙之一粟open in new window

ORM

# GoFrame ORM 使用实践分享open in new window

# GoFrame ORM原生方法 开箱体验 (上)open in new window

# GoFrame ORM原生方法 开箱体验 (下)open in new window

# GoFrame必知必会之Scan:类型转换open in new window

缓存管理

# GoFrame 如何优雅的缓存查询结果open in new window

# GoFrame gcache使用实践 | 缓存控制 淘汰策略open in new window

# GoFrame gredis 配置管理 | 配置文件、配置方法的对比open in new window

# GoFrame gredis 硬核解析 | DoVar、Conn连接对象、自动序列化open in new window

# GoFrame gredis 如何优雅的取值和类型转换open in new window

协程管理

# GoFrame gpool 对象复用池 | 对比sync.poolopen in new window

# goFrame的gqueue详解 | 对比channelopen in new window

# grpool goroutine池详解 | 协程管理open in new window

避坑指南

# GoFrame避坑指南和实践干货open in new window

# GoFrame避坑指南和实践干货(2)open in new window

性能测试

# GoFrame grpool性能测试 | 对比原生goroutineopen in new window

调试&单元测试

# Go本地测试 如何解耦 任务拆解&沟通open in new window

# Go Web 编程入门: 一探优秀测试库 GoConveyopen in new window 作者:# 宇宙之一粟open in new window

应用实践

# gtoken替换jwt实现sso登录 | 带你读源码open in new window

# gtoken替换jwt实现sso登录 | 排雷避坑open in new window

# Go对接三方API实践open in new window

# Go一分钟对接ElasticSearch实践open in new window

# 瞄一眼clickhouse(附 go demo)open in new window 作者:Mastersopen in new window

Git

# Git使用实战:多人协同开发,紧急修复线上bug的Git操作指南。open in new window

# Git 重命名远程分支 | 操作不规范,亲人两行泪。open in new window

刷题

如果你是学生党,没有机会接触商业项目,不用难过。刷力扣是个非常好的选择!

用Go语言刷力扣专栏open in new window

为了方便大家刷Go语言的知识点,特意整理了面试题相关的文章:

# 【狂刷面试题】GO常见面试题汇总open in new window

一起学习

这是收藏破万的:# 《Go学习路线图》让你少走弯路,升职加薪。open in new window

资料