最全的Go资料汇总和最走心的学Go建议

news2024/11/28 18:44:51

推荐语

最用心的Go学习资料和学习建议,可能没有之一。怎么学Go快?有哪些教程建议看?学到什么程度能去找工作?我觉得这个问题的关键要看你的目标是什么?一定要结合你自己的情况去考虑这个事情。

前言

最近不少读者私信我学Go的问题,基本都是“怎么学Go快?有哪些教程建议看?学到什么程度能去找工作?”。

我觉得这个问题的关键要看你的目标是什么?

是想快速学习之后找到一份工作就可以?还是本来有其他语言的基础,想通过学Go提高自己,进而找到一份更好的工作。

同样也要结合自己的过往经历,比如你是在校生,还是刚工作不久的朋友,还是混迹职场多年朋友。

或者你是运维转Go,还是Java转Go,PHP或者Python转Go等等。

我都是在充分了解大家过往的经历后,给每位读者提建议的。

聊得人多了也就有了能“抽象”出来的东西,整理一篇文章,分享给大家。

我之前给大家分享的《Go学习路线图》,是结合我的经历,适合于有一定基础,想快速学习Go,尽快找到工作的朋友。

如果你有充足的时间去学习(或者你想谋求一个更好的工作),建议大家按照这篇文章的顺序,夯实自己的基础,多做项目,进而实现自己的目标。

1. Go语言基础

图书

入门看这个:《Go语言学习笔记》,跟着书籍多敲敲代码,Go语言相对C++,Java来说,简单很多。

视频

入门阶段我非常推荐这套免费教程:

不管是内容,还是讲解方式,还是深入浅出的讲解风格都深得我心,也是我学习的榜样。

网站资源

1. 菜鸟教程

  • 简介:如果你觉得看视频很浪费时间,强烈建议你跟着菜鸟教程动手实践。

2. go语言中文网

  • 简介:这个就不多说了,学Go的应该都知道

3. Go By Example 中文版

  • 简介:使用代码示例来学习 Go 语言。

4. Go 面试题

  • 简介:也是使用代码示例来讲解 Go,非常适合用来准备面试。

5. 跟着单元测试学习 Go

  • 简介:非常见名知意了,也有中文版的哦~

Go轻量级开源项目

学完基础,建议你上手几个基础项目:

1. starcharts

  • 简介:项目的功能是生成 Github 上面的项目的 star 趋势图,核心代码不多,用来练手很合适。

2. gorched

  • 简介:使用 Go 写的一个小游戏。

3. pacgo

  • 简介:也是使用 Go 写的一个小游戏,每一步都有详细的描述和代码实现。

4. wechat-go

  • 简介:微信 web 版 API 的 Go 实现,模拟微信网页版的登录/联系人/消息收发等功能。

我准备脱敏之前用Go开发的类似支付宝集五福项目,开源出来,欢迎大家催更。

2. Web 开发

书籍

基础知识掌握之后,可以上手做一些 web 应用,进一步了解更多的 Go 语言相关框架以及生产环境中的常用中间件,推荐书籍《Go Web 编程》。

框架

了解了web基础知识后可以学习下 web 框架 Gin、GoFrame:两个框架都比较的流行,选择其中一个其实就可以了。

GoFrame相关

  • 官方文档:

  • 掘金GoFrame学习专栏

Gin相关

  • geektutu Gin 简明教程:https://geektutu.com/post/quick-go-gin.html

  • Gorm指南:https://gorm.io/zh_CN/docs/index.html

关于学习框架这件事,都首先推荐看官方文档。不用去找其他的书籍,没有比官方文档更有价值的资料了。

Go web项目

推荐几个使用 Go 构建的基础 web 项目:

1.gin-vue-admin

  • 简介:使用 Gin 框架构建的后台管理系统。

2.ferry

  • 简介:基于 Gin + Vue + Element UI 前后端分离的工单系统。

3. go-admin

  • 简介:Gin + Vue + Element UI 的前后端分离权限管理系统。

我的经验

对于 web 项目的学习,有些朋友觉得很复杂,有畏难心理,不知道怎么下手。

我的建议是:多动手,可以在本地把项目跑起来,然后断点调试一个 HTTP 请求的整体流程,搞懂了一个接口,其他的大同小异。

编程是实践科学,要有工匠精神,不要畏难畏烦,动手实践才是王道。

这里推荐一下我的视频教程:用敏捷开发和“抄作业”的思想,快速上手Go实战项目

视频地址:https://www.bilibili.com/video/BV1bt4y1K7Lj/

3. Go 语言进阶

书籍

基础知识掌握后需要了解一下Go的底层原理和高级用法啦(面试造火箭必备)

这里推荐书籍《Go 程序设计语言》(号称 Go 圣经)、《Go 语言高级编程》、《Go并发编程实战》。

网站资源

1.《Go 语言圣经》

  • 简介:go圣经是值得反复阅读的

2.《Go 语言高级编程》

  • 简介:Go语言专家曹大的书,深入到了Go的汇编和很多高级用法

3.《Go专家编程》

  • 简介:理解Go中常见数据结构的底层,建议大家重点去看Channel,Mutex,Map

4.《Go语言设计与实现》

  • 简介:了解go的编译机制,goroutine调度机制,垃圾回收机制
  • PS:某否技术平台最近送了我这本书,正在拜读中,看了前几篇,已经被作者的严谨折服了。

我的经验

因为工作太忙的原因,已经很长时间没有看纸质书了,只是根据自己的需求去查官方文档,查免费教程。

当我最近阅读了一段时间纸质书之后,发现读书的体验真的很好,读进去就不会浮躁,理解问题可以深入好多。

所以这篇文章都是先给大家推荐书籍、再推荐学习网站、再推荐项目。

进阶Go项目

想要进一步巩固所学知识,这里推荐几个比较进阶的项目

1. goframe-shop-v2

  • GitHub:https://github.com/wangzhongyang007/goframe-shop-v2
  • 简介:这是基于goframe框架最新版开发的电商实战项目,做业务开发的同学可以看下

2. 7DaysGolang

  • 简介:这是星球里不少星友推荐的项目:7 天使用 Go 从零实现 web 框架、分布式缓存、ORM 框架、RPC 框架,代码量不多,但是质量挺不错

3. godis

  • 简介:用golang实现一个redis服务器

gochat

  • 简介:一个 Go 语言实现的轻量级 im 系统,对网络方面熟悉或者感兴趣的可以看看。

4. Go微服务云原生

目前 Go 在微服务中的应用非常广泛,微服务云原生是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚。

或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会,闭门造车是学不会微服务云原生的。

正如前段时间帮知识星球中大三星友答疑一样,老师留的毕设是Go微服务云原生相关,他不知道从何学起。

我们给的建议是:首先要明确是基于云原生体系做应用开发,还是做云原生的基础建设,然后有针对性的去学习,感兴趣的朋友可以加入星球查看我们的总结。

框架

推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等。

其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档。

我个人建议学习go-zero,跟着快速上手和简单例子写一遍,不仅可以熟悉CRUD,还能了解Go中优秀的框架设计思想,微服务确实是未来的趋势

5.面向就业编程

如果你上面都掌握的不错了,就可以着手准备找一份「好工作」了。

如果需要简历优化和求职指导可以微信私信我。

尽快找到工作

如果你想尽快找到工作,对薪资和企业规模要求没有那么高,基本掌握下面这些就可以去约面试了:

  • Go语言基础 : 了解golang的基本语法和语言特性
  • 算法题 :用golang来练习写算法题,熟练掌握golang的基本语法和常用库函数,同时刷好算法题也是进入中大厂的必要条件,力扣、牛客都可以去刷一刷
  • web相关:《Go Web编程》看了,深入理解golang如何处理request,标准库中的包如何应对各种常见的web场景;Gin和Goframe两个web框架二选一即可,去做一个实战项目
  • 基础知识:网络,操作系统Linux,数据库MySQL、pgsql,缓存redis、mongoDb 面试的重中之重,一定要看,理解着去背知识点。
  • Go底层原理:面试造火箭必备,具体看上面Go语言进阶部分。面试重点:map,slice,channel底层实现原理,goroutine调度,GMP模型,内存分配,垃圾回收,逃逸分析等
  • web项目 :至少选择一个web项目作为自己的项目(见上面web项目推荐),项目需要用到数据库,和至少一种中间件(如redis,消息队列等)

找到好工作

上面提到的这些,我认为能实现「尽快找到工作」的目标。

但是要实现找到好工作的目标,除了技术本身,还需要结合你过往的经历,把你过往的经历转化成自己的优势、做更多的商业项目、有针对性的准备意向公司面试等等。

如何找到好工作,也是我最近思考的问题,欢迎有这方面思考的朋友私信我,交流讨论。

更多资料

因为C站不支持添加太多外链,需要上述资源链接的朋友可以加入我在CSDN创建的社区:

点这里—>加入高质量学编程专属群👏👏👏

最后

最后,如果你觉得这期内容不错的话,一定要三连支持一波。

转发给更多需要的人,让更多的人看到,就是对我最大的鼓励。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能学习硬件小程序开发,提升学习感受

随着科学技术的飞速发展,各种智能学习硬件层出不穷,日常生活中的智能电子产品也愈来愈多,但是大部分硬件产品都是单独使用的,并没有配套的app或者小程序,在使用过程中总是会出现一些小插曲,比如&#xff1a…

FL Studio21.0.0中文版发布更新下载支持简体中文版

FL Studio 21.0.0官方中文版重磅发布纯正简体中文支持,更快捷的音频剪辑及素材管理器,多样主题随心换!Mac版新增对苹果M2/1家族芯片原生支持。 更新版本:21.0.0支持语言:简体中文/英语更新时间:2022.12.07…

[附源码]Python计算机毕业设计动物园动物饲养管理Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

[附源码]Python计算机毕业设计电影推荐系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

[附源码]Nodejs计算机毕业设计基于web的网上订餐系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

Seekbar和ProgressBar进度条样式

有时项目中需要实现水平圆角进度&#xff0c;如下两种&#xff0c;其实很简单 下面开始看代码&#xff0c;先从主界面布局开始看起: <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/…

计算机网络:应用层

应用层 应用层是计算机体系结构中的最顶层&#xff0c;是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务. 1. C&#xff08;客户端&#xff09;/S&#xff08;服务器&#xff09;和P&#xff08;Peer&#xff09;2P&a…

Java编码实现Activemq通讯

目录 一、IDEA建Maven工程 二、pom.xml 三、JMS编码总体架构 四、粗说目的地Destination——队列和主题 五、点对点消息传递域中&#xff0c;目的地被称为队列&#xff08;queue&#xff09; 六、在发布订阅消息传递域中&#xff0c;目的地被称为主题&#xff08;topic&a…

vue axios实战,请求天气预报接口

效果预览 创建流程 1. 创建项目目录 mkdir test22. 进入目录 cd test23. 引入vue 引入vue&#xff0c; 一路敲回车就行了 npm init vuelatest4. 启动项目 创建成功&#xff0c;启动项目 cd vue-project npm install npm run dev执行run 后的访问结果 > vue-project…

简单得令人发指,说不会一定是在骗领导:配准法在地图上叠加边缘透明旅游图演示

目录 1 前言 2 基本设置 3 配准设置 4 切图 5 更简单的切图方法 1 前言 居然还有人在抱怨&#xff0c;说在地图上叠加手绘图好麻烦啊好复杂&#xff0c;都干了一星期了又要推倒重来简直不想活了&#xff0c;眼睛都累哗啦了。。。嗯&#xff0c;我相信同学你没说假话&#…

网络工程师备考5章

5.1 考点分析 5.2 WLAN基础 注&#xff1a;例如上面图中蜂窝的A&#xff0c;周围全是其他的蜂窝&#xff0c;实现了相同频率的区域隔离&#xff0c;简单了解一下它发展的几个阶段。 注&#xff1a;简单了解即可。 WLAN、802.11Wifi 这三个有什么区别&#xff1f; WLAN是无线局…

链式二叉树(C语言实现)

文章目录&#xff1a;二叉树链式结构实现1.链式二叉树的结构2.遍历二叉树2.1前序遍历2.2中序遍历2.3后序遍历2.4层序遍历3.功能接口3.1二叉树节点个数3.2叶子节点个数3.3树的深度3.4第k层节点个数&#xff08;k>1&#xff09;3.5查找目标节点3.6判断是否为完全二叉树3.7构建…

AI-多模态-2022:TCL【triple contrastive learning】【三重对比学习的视觉-语言预训练模型】

论文&#xff1a;https://arxiv.org/pdf/2202.10401.pdf 代码&#xff1a;https://github.com/uta-smile/TCL 写在前面&#xff1a; CPC[1]这篇论文中&#xff0c;作者对互信息的公式进行了分析&#xff0c;得到互信息下界的相反数为InfoNCE loss&#xff0c;即最小化InfoNC…

IPv4地址和子网掩码

目录 1.ip的定义 A.官方定义 B.IP的表现形式 C.IP地址分类 2.网络地址和主机地址 3.子网掩码 4.应用场景 1.ip的定义 A.官方定义 IP地址是一种在Internet上的给主机编址的方式&#xff0c;也称为网际协议地址。IP地址是IP协议提供的一种统一的地址格式&#xff0c;它为…

three.js之组对象

文章目录简介例子查看组对象组对象相关方法addremove层级模型节点命名、查找、遍历模型命名例子遍历查找本地坐标与世界坐标例子本地坐标世界坐标缩放系数专栏目录请点击 简介 层级模型就是一个树的结构&#xff0c;他有一个组的概念&#xff0c;对于组我们可以进行旋转、平移…

操作系统中的进程

目录 什么是进程/任务&#xff08;Process/Task&#xff09; PCB的具体信息 1.pid 进程的身份标识 2.内存指针 3.文件描述符表 4.进程状态 5.进程优先级 6.进程上下文 7.进程 记账信息 虚拟地址空间 我的GitHub&#xff1a;Powerveil GitHub 我的Gitee&#xff1a;P…

28年蛰伏,易特驰打响「软件定义汽车」硬战

今年3月&#xff0c;特斯拉给车主推送了新的软件更新版本2022.8.2&#xff0c;更新内容包括&#xff1a;车辆温度预设改进、空调页面显示除雾/除霜提醒、预计充电时间更精准估算、正在进行的通话更新等。 这并不是特斯拉第一次通过升级OTA&#xff0c;增加新功能、完善现有功能…

防火墙的前世今生

防火墙的前世今生 1、第一代防火墙&#xff1a;包过滤防火墙&#xff0c;实现简单的访问控制&#xff0c;也就是我们经常在交换机路由器用到ACL技术 当我们192.168.1.1需要访问192.168.2.1的WEB服务的时候&#xff0c;先要去精确控制能匹配源目地址&#xff0c;端口号&#xf…

限制 SLS告警通知时段的几种常见方法

前言 在对系统进行监控告警的过程中&#xff0c;有时候并非在任何时候都要接收告警通知&#xff0c;例如以下场景&#xff1a; 计划内变更触发的已知告警可以无需通知非工作时间不接收不严重的告警夜里不接收电话告警等等 本文会介绍几种常见的限制告警通知时段的方法&#x…

IDEA技巧汇总:这30个强大的功能,总有一个你能用上!

目录查看代码历史版本调整idea的虚拟内存&#xff1a;idea设置成eclipse的快捷键设置提示词忽略大小写关闭代码检查设置文档注释模板显示方法分隔符设置多行tabtab过多会自动关闭快速匹配方法的大括号位置代码结尾补全模糊搜索方法预览某个类的代码查看方法在哪里被调用代码模板…