未分类 · 2023年3月26日 0

Go 语言从零开始学的话大概多长时间才能达到自主完成项目的水平?【】

最多一个月,不能再多了。从零开始,基础语法、数据类型、错误处理、结构体与接口、并发处理等,然后熟悉了解系统标准库,网络服务、WEB框架等等。

Go语言入门门槛是比较低的,前期重点一定要把基础打好,然后就是实践、实践、实践。

多抄、多写、多练。

Go语言是一门全新的静态类型开发语言,具有自动垃圾回收、丰富的内置类型、函数多返回值、错误处理、匿名函数、并发编程、反射、defer等关键特征。从语言层面来说天然支持并发,可以充分利用CPU多核,并且非常适合用来进行服务器编程、网络编程和分布式编程等。

在云计算领域,用Go语言编写的云基础项目如Docker、Kubernetes都取得了巨大的成功,别外还有知名的项目如Etcd、consul、flannel等,也都是使用Go语言实现的。

为此我还专门整理了关于如何学习Go语言的资料,从基础到进阶、Web编程、微服务的学习,你可以参考一下。




基础学习

书籍推荐

《Head First Go语言程序设计》、《Go语言学习笔记》、《Go语言趣学指南》、《Go语言编程》


当然,不必所有的书都读,找其中一本学习即可。

在线学习Go语言资料

  1. Go By Example 中文版 : gobyexample-cn.github.io,使用代码示例来学习 Go 语言。
  2. Go 面试题 : topgoer.cn/docs/gomians,也是使用代码示例来讲解 Go,用来准备面试也是很好的。
  3. 无闻大佬的在线入门指南 : github.com/unknwon/the-
  4. 跟着单元测试学习 Go : github.com/quii/learn-g,有中文版。

初级练手项目

  1. starcharts : github.com/caarlos0/sta,项目的功能是生成 Github 上面的项目的 star 趋势图,核心代码不多,用来练手很合适。
  2. gorched : github.com/zladovan/gor,使用 Go 写的一个小游戏。
  3. pacgo : github.com/danicat/pacg,也是使用 Go 写的一个小游戏,每一步都有详细的描述和代码实现。
  4. wechat-go : github.com/songtianyi/w,微信 web 版 API 的 Go 实现,模拟微信网页版的登录/联系人/消息收发等功能。

Go语言进阶

书籍推荐

《Go程序设计语言》、《Go专家编程》、《Go语言高级编程》、《Go并发编程》


在线学习Go语言资料

1.《Go 语言设计与实现》: draveness.me/golang

2.《Go 语言高级编程》: chai2010.cn/advanced-go

进阶练手项目

  1. rosedb : github.com/roseduan/ros,一个用 Go 实现的简易高效的 k-v 存储引擎。
  2. gochat : github.com/LockGit/goch,一个 Go 语言实现的轻量级 im 系统,对网络方面熟悉或者感兴趣的可以看看。
  3. 7DaysGolang : github.com/geektutu/7da,7 天使用 Go 从零实现 web 框架、分布式缓存、ORM 框架,、RPC 框架,代码量不多,但是质量挺不错的

Go Web编程

书籍推荐

《Go Web编程》


在线学习资料

可以学习下 web 框架 Gin、beego:两个框架都比较的流行,选择其中一个其实就可以了,推荐 Gin。官方文档都有中文,照着 demo 敲一下,了解下怎么处理 HTTP 请求的。

其次还需要掌握一下比较流行的 ORM 框架 Gorm,有官方中文文档,照着 demo 敲一下基本上两天就能掌握了,后面遇到不会的再来查。

Web框架相关的,基本上看官方文档就可以了,就不用再去找专门介绍的书籍,没有比官方文章更正宗的资料了。

除框架之外,你还需要学会的是包括但不限于:

  • web的逻辑,Http协议,grpc,session,cookie等这些web的基础知识
  • 数据库方面MySQL、Redis、MongoDB等
  • 中间件Kafka、Etcd等
  • 文件文件处理,XML、JSON、正则等
  • 安全与加密,预防CSRF攻击、XSS攻击、SQL注入等,加密解密等

Go Web项目推荐

  1. gin-vue-admin : github.com/flipped-auro,使用 Gin 框架构建的后台管理系统。
  2. ferry : github.com/lanyulei/fer,基于 Gin + Vue + Element UI 前后端分离的工单系统。
  3. go-admin : github.com/go-admin-tea,Gin + Vue + Element UI 的前后端分离权限管理系统。

Go 微服务

目前 Go 在微服务中的应用也比较广泛,但说实话,微服务是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚,而且也没条件,或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会。

推荐一本微服务概述的基础书籍《微服务设计》、《微服务架构设计模式》,可以帮助你理解微服务的建模、集成、测试、部署和监控的一些基础知识。

其次,你可以看一下《Go微服务实战》这本书,看后半部分即可,里面其实介绍的还是关于微服务方面的知识。


推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等。其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档。

在线学习的资料:

ewanvalentine.io/micros

手把手实现一个简单的 Go 微服务项目,你可以通过这个项目来学习微服务的相关知识,并且有中文版。

Go语言原理研究

如果你对Go语言底层原理感兴趣的话,可以看下这本书《Go语言底层原理剖析》。


开源项目学习

在项目开发过程中,也会用到各种开源项目。一开始没必要直接钻研源码,先要学习开源项目背景,能解决什么问题,开源作者的项目理念,使用了哪些技术等等。

这些清楚以后,可以找自己感兴趣的技术点或者模块去针对性的学习,千万不要想着一开始就想一网打尽式的学习,没有针对性意味着没有重点,没有重点很大概率就会白学或者学到的就会很少。

先推荐几个经典的开源项目供你参考:

  • www.docker.com 使用 docker 来做虚拟化
  • github.com/nsqio/nsq 学习消息队列,学习 channel 和分布式
  • github.com/coreos/etcd分布式应用

如果你有自己比较看好的开源项目会更好,兴趣永远是前进的第一步。

相对前几年,Go语言的书籍、教程,各种文章都如雨后春笋一般越来越多,学习起来也更加方便,但是同时也要注意不要过度陷入知识碎片而无法自拔,最重要的还是要去系统去学习一下,针对性的练习、实践和应用。

我整理了一些Go语言的视频和电子书资料,如果你感兴趣的话,可以自己下载:

Go语言学习资料 提取码: 55tj

@争渡

也可以关注我的知乎,一个爱分享的程序员,如果对你有用,来个赞吧!

打赏 赞(0) 分享'
分享到...
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

文章目录