写点什么

Go 必知必会:其实学 Go 很简单。

作者:王中阳Go
  • 2024-08-26
    北京
  • 本文字数:2299 字

    阅读完需:约 8 分钟

Go必知必会:其实学Go很简单。

本文来自极客学院专栏,欢迎订阅:Go入门进阶实战专栏:其实学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,备注:InfoQ 面试群。

发布于: 刚刚阅读数: 6
用户头像

王中阳Go

关注

靠敲代码在北京买房的程序员 2022-10-09 加入

【微信】wangzhongyang1993【公众号】程序员升职加薪之旅【成就】InfoQ专家博主👍掘金签约作者👍B站&掘金&CSDN&思否等全平台账号:王中阳Go

评论

发布
暂无评论
Go必知必会:其实学Go很简单。_Go_王中阳Go_InfoQ写作社区