查看原文
其他

Go入门进阶实战专栏:其实学Go很简单。

王中阳 王中阳
2024-08-30

感谢极客学院的邀请,我将在极客学院更新Go门进阶实战专栏。

也会在公众号更新专栏内容,希望对你有帮助。

欢迎关注订阅。

关于我

感谢你的关注,我是中阳,一位拥有10年互联网研发和管理经验的技术老鸟。曾作为大厂的Golang高级工程师,我凭借编程技能在北京安家立业。目前,我正作为技术合伙人投身于创业的浪潮之中。

除了在技术领域的深耕,我在自媒体平台上拥有超过10万的读者群体。致力于分享技术博客、开源项目,并且专注于提供就业辅导和职场晋升的指导。希望通过我的专栏,与你一起探索技术的世界,不断提升个人竞争力,共同成长。

从业经历

在2014年,我踏入互联网行业,起初从事客户端开发,使用Java开发Android应用。到了2016年底,随着公司业务转型及个人技术追求,我开始涉足服务端开发,运用Java、PHP、Python等多种编程语言,并在此过程中积累了丰富的系统架构设计和管理经验。

至2019年底,我晋升为公司技术总监。凭借对技术趋势的敏锐洞察,我预见到PHP的竞争力可能减弱,而Go语言有望占据更多市场份额,甚至可能蚕食PHP和Java的市场。因此,我带领技术团队在2019年底转向Go语言开发,并在此感谢前雇主对我们的信任与支持。

如果你所在的公司提供学习Go语言的机会,那无疑是一家值得信赖的公司。到了2023年初,我与前大厂同事共同创业,目前作为技术负责人参与开发和维护自研项目。同时,我持续撰写技术文章、参与开源项目,并提供就业指导及职场晋升答疑服务。

下面分享一下我的Go语言学习之旅,希望能对你有所启发,也希望你能找到自己的“小天才”。

起源

我的Go语言学习之旅与一位杰出同事(以下简称“小天才”)密切相关。小天才作为前端开发人员,于两年前加入我们的团队,彼此之间建立了深厚的相互尊重和赞赏。

小天才对我的信任促使他放弃了其他更高薪酬的工作机会;而我为了确保他能顺利加入,也积极与管理层沟通,争取更好的福利待遇。在众多技术同事中,我对小天才的赏识源于他不自我设限、主动承担额外任务的态度,这也正是我们能够获得更多机遇和可能性的原因。

环境

优秀的工作环境是成功的关键。在过去两年中,我带领的团队对公司的CMS、小程序、网站和活动专题等项目进行了全面重构。我们的后端部分采用了PHP的Laravel框架,以及一些Java旧项目,前端则采用了Vue和Nuxt框架。

我主要负责系统设计、核心后端开发,并与产品经理共同制定前后端方案。小天才在技术层面展现了前后端的全面能力,受他影响,其他几位同事也成长为全栈开发工程师。

契机

春节前的相对宽松工作量为我们提供了提升项目质量的机会。鉴于团队成员对性能的高追求,我组织了一次关于Go语言特性的讨论,特别是其对高并发的天然支持。

利用春节营销活动的需求,我推动团队以项目为导向学习Go,通过实战深入掌握这门语言。这种学习方式与我当年从客户端转向服务端开发的思路一致——项目驱动的学习效率高,尽管可能不够系统。我的专栏旨在分享敏捷开发经验,同时揭示我曾经的挫折,帮助读者避免走弯路。

你追我赶

在准备营销活动需求的同时,团队开始了Go语言的自学之旅。我经常与团队成员,尤其是小天才,在散步或会议中讨论学习中遇到的问题。小天才的进步迅速,这得益于他不设限的态度,这一点至关重要。

我们通过互相提问和解答,快速梳理知识结构,确保深刻理解所学内容。此外,掌握Go或任何编程语言的关键是:多实践编码。

落体项目

春节前,公司推出了一项复杂的营销活动,类似于支付宝的集五福。小天才迅速行动,在产品经理完成原型设计和我设计数据库结构后,迅速用Go编写了核心逻辑的demo。

我在此基础上继续开发了分配方案、不同概率集卡的拉新数量和活动成本推算等,这些数据基础让我们能够自信地编写业务逻辑。最终,小天才负责项目开发,我负责代码审查和充分测试。活动效果显著,为公司公众号带来了超过1万的新用户,管理层对此非常满意。

我们对项目进行了总结和复盘,在团队内部进行了代码审查,并制定了开发规范,以便团队内部复用。

进阶

受到春节活动成功的鼓舞,我们在元宵节推出了另一项类似活动。在春节活动的基础上,优化了代码,并整理了使用的技术点,包括但不限于:

  • Go
  • 跨平台编译
  • Goroutine和Channel
  • Gorm和Gin框架
  • Redis缓存
  • 日志统计
  • 登录、CORS和Session中间件
  • 反射
  • 读写锁
  • Docker
  • 云效流水线部署
  • K8s容器编排

总结反思

从决定学习Go到实际应用,我们仅用了一天时间来决定,随后一周集中学习Go的语法特点,并大量编写demo。接着,我们用两周时间开发了一个为公众号拉新1万+的营销活动。学习Go并不难,特别是订阅了我的专栏后,学习过程将变得更加简单。

本专栏内容

划分了四个模块:准备篇、基础篇、进阶篇、实战篇

  1. 准备篇:主要讲解Go的优势和特点、开发环境搭建等准备工作。
  2. 基础篇:主要讲解Go语言的语法和基本概念,包括基本数据类型、数组和切片、map、channel、interface、指针、流程控制、函数、错误处理、panic、反射和结构体,每一篇文章都旨在构建读者对Go编程基础的深刻理解。基础篇的目标是确保读者能够熟练掌握Go的基础语法和编程范式,为后续的进阶学习打下坚实的基础。
  3. 进阶篇:将深入讨论Go语言的高级特性,内容包括协程、RPC、并发安全、扩展包、部署、ORM和测试。进阶篇的目的是通过探索Go的高级编程技巧和最佳实践,帮助读者提升编程技能,理解如何在实际项目中应用这些特性来解决复杂问题。
  4. 实战篇:主要讲解将理论与实践相结合,展示Go语言的应用,内容包括设计模式、框架、应用实践、规范&技巧和重要概念。实战篇旨在帮助读者将所学知识应用于构建高效、可维护的Go应用程序。

早日上岸!

好了,我的故事和专栏介绍先分享到这里,如果你最近在找工作,欢迎联系我:

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。

点击下方文章,看看他们是怎么找到好工作的!

这些朋友赢麻了!

我们又出成绩啦!大厂Offer集锦!遥遥领先!

还有最新鲜的腾讯面经,不要错过哦!

腾讯的面试,强度拉满!

冲进腾讯了!

继续滑动看下一个
王中阳
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存