Go语言于2009年11月正式宣布推出,成为开放源代码项目,发展至今已经具有越来越广泛的影响力,今年更是在 TIOBE 编程语言排行榜中上升了 34 位,跻身 20 强。很多开发者也逐渐将目光投向这门语言,本文整理了部分比较好的学习和应用 Go 语言的开发项目,希望为没有接触过这门语言的开发者们提供一个学习和了解这门语言的途径。

关于 Go 语言:

Go 是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。

Go logo

 

一、入门篇

一本开源的书籍《Go Web编程》《build web application with golang》。书中作者主要分享了Go写web应用的一些东西:

  • 对于从php/python/ruby转过来的同学了解go怎么写web应用开发的
  • 对于从c/c++转过来的同学了解web到底是怎么运行起来的

由于目前国内并没有比较好的 Go 语言书籍,而国外的优秀书籍因为英文的缘故在一定程度上也为不少 Go 语言爱好者带来了一些学习上的困扰,尽管《The Way to Go》这本名对目前 Go 语言版本来说有小部分内容相对过时,但是为当下不可多得的好书,部分内容已获得作者同意根据当前 Go 语言版本进行修改。并且以开源的形式免费分享给有需要的 Go 语言爱好者。

《Go 编程基础》是一套针对 Google 出品的Go语言的视频语音教程,主要面向新手级别的学习者。每堂课都会建立一个文件(例如:lecture1.md)作为课堂笔记。课堂笔记中里面包含了该堂课所涵盖的知识点以及知识点开始讲解的时间点,方便学习者快速定位要了解的部分,节省不必要浪费的时间。此外,如果教程中因口误或其它原因使学习者产生迷惑的部分,同样会在课堂笔记中进行补充说明。

这是 Go 语言的标准包和部分第三方包的包文档中文翻译。

项目源码:http://git.oschina.net/liudiwu/pkgdoc
在线浏览:http://mygodoc.oschina.mopaas.com/

二、开发篇

0.Go 语言开发工具 LiteIDE

LiteIDE 是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。

1.Eclipse 的 Go 插件 GoClipse

GoClipse 是一个为Eclipse平台添加 Go 语言编程功能的 Eclipse 插件。GoClipse 的目的是为初学者创造一个开发 Go 语言的环境。平台发展比较缓慢,但一直在持续。

2.基于 Web 的团队 Go 语言 IDE Wide

目前较为流行的 Go IDE 都有一些缺陷或遗憾:

  • 文本编辑器类(vim/emacs/sublime/Atom 等):对于新手门槛太高,搭建复杂
  • 插件类(goclipse 等):需要原 IDE 支持,不够专业
  •  LiteIDE:界面不够 modern 
  •  没有团队开发体验

Go IDE 很少,用 Go 本身开发的 IDE 更是没有,而 Go IDE 这是一个很好的尝试。

3.Go的全堆栈Web框架 Revel

Revel 是 Go 语言的框架,其思路完全来自 Java 的 Play Framework。

4.Go 程序调试工具 godebug

godebug 是一个与众不同的 Go 程序调试工具,传统的编译型语言调试器使用底层系统调用并读取二进制文件用于调试各类符号。使用起来很麻烦而且很难移植。godebug 使用不同的方法,直接把源码作为目标程序,在每一行插入调试代码,然后编译并运行。结果就是一个全功能的调试器,完全可以移植到不同平台。事实上,由于有了 gopherjs ,你也可以在浏览器上进行调试。

godebug screen capture

三、应用篇

0.极易搭建的自助 Git 服务 Gogs

Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

1.Go 爬虫软件 Pholcus

Pholcus(幽灵蛛)是一款纯Go语言编写的支持分布式的高并发、重量级爬虫软件,定位于互联网数据采集,为具备一定Go或JS编程基础的人提供一个只需关注规则定制的功能强大的爬虫工具。

image

2.游戏服务器框架 Leaf/go

Leaf 是一个使用 Go 语言开发的开源游戏服务器框架,注重运行效率并追求极致的开发效率。Leaf 适用于几乎所有的游戏类型。具有以下特点:良好的使用体验、稳定性好、多核支持、良好的模块支持。

3.Go 异步任务队列 Go Machinery

Machinery 是一个 Go 语言的异步任务队列和作业队列,基于分布式消息传递。类似 Python 的 Celery 框架。Machinery 中的任务(或者作业)可通过多个 worker 在很多服务器上并发的执行,或者可在单个服务器上利用 Go 的协程运行多个 worker 进程。

Example worker receives tasks

 

4.Go 应用框架 beego

beego是一个用Go开发的应用框架,思路来自于tornado,路由设计来源于sinatra,支持如下特性:MVC、REST、智能路由、日志调试、配置管理、模板自动渲染、layout设计、中间件插入逻辑、方便的JSON/XML服务。

5.HTTP 流量复制工具 Gor Go

Gor 是用 Go 编写的简单 HTTP 流量复制工具,主要是为了从生产服务器返回流量到开发环境。使用 Gor 可以在实际的用户会话中测试代码。

Gor Go

6.Go 语言的 Web 框架 Martini

Martini 是一个非常新的 Go 语言的 Web 框架,使用 Go 的 net/http 接口开发,类似 Sinatra 或者 Flask 之类的框架,你可使用自己的 DB 层、会话管理和模板。

7.Go 的 WebSocket 框架 Melody

Melody 是一个 Go 语言的微型 WebSocket 框架,基于 github.com/gorilla/websocket 开发。

Chat demo

8.Go 开发 MySQL Proxy 项目 kingshard

kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 kingshard的性能是直连MySQL性能的80%以上。

9.Go 开发的 IM 和推送服务 goim

goim 是一个支持集群的im及实时推送服务(支持websocket,http和tcp协议)。

Go 测试工具 GoConvey

GoConvey 是个相当不错的 Go 测试工具,支持 go test。可直接在终端窗口和浏览器上使用。

不过虽然 Go 发展很快,开发者们还是应该根据自己的实际情况选择是否要深入了解这门语言。如果各位还有其他在学习 Go 语言方面好的开源项目,欢迎在评论区留言,以供学习和交流。