作者:HelloGitHub-小鱼干&卤蛋

故事要从 2007 年说起。因为受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 召集 Robert Griesemer 和 Ken Thompson 两位牛人,决定创造一种新语言来取代 C++,这就是 Go 的由来。

在 2009 年 11 月 10 日 Google 正式发行 Go 这一编程语言。Go 从 C 语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有 C 语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。

Golang 项目地址:https://github.com/golang/go

经过十多年的发展,截止北京时间:2020 年 11 月 17 日定稿时 Go 的最新版本已经到了 1.15.5。同时国外的 Twitter、Google、Netflix 等大厂和国内的字节跳动、腾讯、B 站等公司都在用 Go 开发他们的主要业务,诸如 PingCAP 这一新兴 NewSQL 数据库厂商的主产品 TiDB 更是使用 Go 进行开发,并成为了 GitHub 上知名的 Go 语言开源项目。可见 Go 在互联网公司的开发地位日渐重要,在开源社区也十分活跃。

那这个时候新手“上车”晚不晚?GitHub 上面有什么好玩、入门级的 Go 语言项目?

这里是 HelloGitHub 的《GitHub 上适合新手的开源项目》系列,共计 5 篇文章:

  1. C++ 篇
  2. Python 篇
  3. Go 篇
  4. Java 篇
  5. JavaScript 篇

本期是 Go 篇,下文的开源项目选自 HelloGitHub 往期月刊。正如 Go 语言之父的 Rob Pike 所说的 Less is more or less is less,本文也本着这一原则:大道至简。下面的每一个 Go 语言开源项目都能独当一面,成为新手的学习项目而且合在一起可以为你提供更为全面的 Go 认知——1 + 1 > 2 。

Talking is cheap, Let's Go

Part One:师父领进门

1.1 真正的入门指南:the-way-to-go_ZH_CN

GitHub 地址→https://github.com/unknwon/the-way-to-go_ZH_CN

《Go 入门指南》这本开源书籍是一位 Golang 的布道者(无闻)苦于当时国内没有比较好的 Go 语言书籍,而着手翻译的一本国外书籍《The Way to Go》。该书通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自身在软件工程、编程语言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术分类来进行讲解。

该书将从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来开发 Web 应用这些高级概念和技巧。

阅读地址→https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md

1.2 从零开始学 Go Web 编程:build-web-application-with-golang

GitHub 地址→https://github.com/astaxie/build-web-application-with-golang

《Go Web 编程》这本开源书籍,从零开始手把手教你 Go 的环境安装和配置、基本语法再到 Go Web 开发的方方面面。可谓是一书在手,“天下”(Go Web)任我行。当然书写得再好,也是“师傅领进门,修行靠个人啊!“

阅读地址→https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/SUMMARY.md

Part Two:再上一层楼

2.1 七天用 Go 从零实现系列:7days-golang

GitHub 地址→https://github.com/geektutu/7days-golang

用 Go 分别写一个:Web 框架、分布式缓存、ORM 框架、RPC 框架的实战教程。有些东西看懂了,不一定会用,会用了也不一定能自己搞出来。所以从零写一个框架,了解其中的细节,才能算上真正懂了吧。

在线阅读→https://geektutu.com/post/gee.html

2.2 Go 学习之路:golang-developer-roadmap

GitHub 地址→https://github.com/Alikhll/golang-developer-roadmap

《Go 开发者路线图》是一个成为 Go 开发的学习路线。一图胜千言,选取这个项目是为了让大家能快速了解 Go 所需学习的知识点和前进的方向。

2.3 Go 高级编程:advanced-go-programming-book

《Go 语言高级编程》作为针对有一定 Go 基础的进阶书籍,内容涵盖并发、GOC 编程、Go 汇编语言、RPC 实现、Web 框架实现、分布式系统等高阶主题。该书的附录也是一大亮点,收录了 Go 有趣的代码片段、Go 常见坑。要想 Golang 玩得溜,得在 Go 高级编程下功夫 [手动狗头]

GitHub 地址→https://github.com/chai2010/advanced-go-programming-book

在线阅读→https://chai2010.cn/advanced-go-programming-book/

Part Three:是时候展示真正的技术了

3.1 星图:starcharts

GitHub 地址→https://github.com/caarlos0/starcharts

这个项目是通过可视化的方式展示 GitHub 上 star 的增长曲线,也就生成是“星图”。推荐这个项目主要是运行简单和直观的数据可视化,可以快速地感受到 Go 开源项目带来的便利。我第一次玩这个项目的时候不会 Go 语言,但是参考这个项目写一个 Python 版本的星图,所以我想已经入门 Go 的各位肯定也能看懂。

有的小伙伴可能会说我没有开源项目、我的项目都没有 star 我学这个项目没用,我想了下确实是缺少些动力。如果抛开 GitHub 的 star 元素,还有一个适用更多场景的 Go 数据可视化项目:go-echarts。来吧,感受下数据的律动。

GitHub 地址→https://github.com/go-echarts/go-echarts

3.2 来 Chat 下:gochat

GitHub 地址→https://github.com/LockGit/gochat

gochat 是纯 Go 实现的轻量级即时通讯系统。技术上各层之间通过 RPC 通讯,使用 Redis 作为消息存储与投递的载体,相对 Kafka 操作起来更加方便快捷。各层之间基于 etcd 服务发现,在扩容部署时将会方便很多。架构、目录结构清晰,文档详细。而且还提供了 Docker 一键构建,安装运行都十分方便。

3.3 给!拿去用:annie

GitHub 地址→https://github.com/iawia002/annie

Go 编写的下载快速、使用简单、程序纯净的视频下载工具。支持哔哩哔哩、YouTube 等视频网站。可作为前段时间被封禁:youtube-dl 的替代品(目前已重新上架),它真的很强大!先感受下 annie 带来的便利,可能就有兴趣去探究它的源码啦。

$ annie -c cookies.txt https://www.bilibili.com/video/av20203945/

 Site:      哔哩哔哩 bilibili.com
Title: 【2018拜年祭单品】相遇day by day
Type: video
Stream:
[default] -------------------
Quality: 高清 1080P60
Size: 220.65 MiB (231363071 Bytes)
# download with: annie -f default "URL" 16.03 MiB / 220.65 MiB [==>----------------------------] 7.26% 9.65 MiB/s 19s

最后

推荐几个 GitHub 上的大佬:

为什么没写人物介绍?我只是一个小小的 follower,了解的只是他们 GitHub 上的项目,其它的我都是道听途说,不能乱写。当然还有很多在 GitHub 贡献巨大的大佬们,没写到的不要打我呀!还不是因为你们不来 HelloGitHub 推荐项目吗?

适合 Go 新手学习的开源项目——在 GitHub 学编程的更多相关文章

  1. 适合 C++ 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干 俗话说:万事开头难,学习编程也是一样.在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如: 我要学习某一门编程语言,有什么开源 ...

  2. 适合 JS 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干 这里是 HelloGitHub 的<GitHub 上适合新手的开源项目>系列的最后一篇,系列文章: C++ 篇 Python 篇 Go 篇 Java ...

  3. 学习Coding-iOS开源项目日志(五)

    继续,接着前面第四篇<学习Coding-iOS开源项目日志(四)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目 ...

  4. 学习Coding-iOS开源项目日志(一)

    前言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目.本篇开始会陆续更新本人对github上开源的一个很不错的项目的一点点学习积累.也就是,探究着别人写的源码,我学到了 ...

  5. 学习Coding-iOS开源项目日志(三)

    继续前两篇,接着本第三篇<学习Coding-iOS开源项目日志(三)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的 ...

  6. 学习Coding-iOS开源项目日志(二)

    继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...

  7. 如何参与开源项目 - 细说 GitHub 上的 PR 全过程

    目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...

  8. 用Java开源项目JOONE实现人工智能编程

    http://www.robotsky.com/ZhiN/MoS/2011-08-25/13142461416649.html 用Java开源项目JOONE实现人工智能编程 https://sourc ...

  9. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

随机推荐

  1. 多测师讲解python_斐波那契数列:_高级讲师肖sir

    def f(n): a,b=1,1 if n==1 or n ==2: return 1 else: i=3 while i<=n: a,b=b,a+b i+=1 return bprint(f ...

  2. python面试题-django相关

    1.中间件 中间件一般做认证或批量请求处理,django中的中间件,其实是一个类,在请求和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法, 如请求过来 执行process_re ...

  3. 如果你想or即将成为一名程序员,那你需要知道这些东西!上岗须知~

    前两天公司学院的同学给我看了一下即将入职的应届生的数量,真是不少.感慨一下,一批新人即将到来,而自己又老去了一岁.码农是一个必将终身学习的职业.而相关的知识越来越多了.接下来该学什么?接下来该干什么? ...

  4. linux(centos8):使用zip/unzip压缩和解压缩文件

    一,查看zip命令所属的rpm包 1,zip [root@kubemaster ~]# whereis zip zip: /usr/bin/zip /usr/share/man/man1/zip.1. ...

  5. minianaconda3安装

    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh chmod +x Miniconda3-lates ...

  6. buuctf-misc-[BJDCTF 2nd]圣火昭昭-y1ng 1

    开局一张图片,flag全靠猜,那这个是不是和outguess工具有关呢?于是我们显示查看了图片的详细信息 看到是新佛曰,于是我们用新佛曰论禅解密:http://hi.pcmoe.net/buddha. ...

  7. 看完本文若不能让你学通“Python”,我将永远退出IT界

    学Python,切忌今天这学一点,明天那里学一点,零零散散没有系统的学习.这样不仅耽搁大家时间,久而久之也会消磨大家学习的兴致!这里给大家总结了一张系统的Python学习路线图!希望大家共勉! Pyt ...

  8. 没花一分钱的我竟然收到的JetBrains IDEA官方免费赠送一年的Licence

    前言 做java的人,一般IDE工具用的不是eclipse就是IntelliJ IDEA了吧,eclipse因为是开源软件,而且起步比较早,功能也比较完善.早期基本上做java的使用eclipse都是 ...

  9. python定义函数后跟->的意义

    举例 def xxx(x)  后面跟着一个->数据类型 比如->int:(别忘了冒号) 作用很简单 挺流氓的 直接让函数返回值为这个类型 非常方(liu)便(mang)

  10. gulp + angularjs

    示例项目介绍 文中使用的例子是一个基于 Angular.js 实现的网页版 Todo App,在 Github 中下载angular-quickstart.项目代码结构如下 清单 5. 项目目录结构 ...