最近在学习使用Go开发web应用,也了解了Go的一些web框架。我不禁思考,Go语言适用于web开发吗?如果是,它有什么优势呢?阅读了一些资料后,我想谈谈我粗浅的看法——Go语言适用于web开发。

一. 简洁且快速
Go的一个突出优势是可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:“我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。” 谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,“使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。”

Go的编译为系统可执行文件运行,不依赖其他库、无需运行时环境。此外,它具有天生的并发能力(协程),编写程序时很容易实现并发。比如下面这个例子:

func main(){
   //启动100个并发工作
   for i := 0; i < 100; i++ {
        go work(i)
   } 
}

使用go命令就可以启动并发工作。
快速的处理、天生的并发能力,使得Go有能力处理高并发的请求,这是开发Web应用程序的一个非常重要的优点。

二. 成熟的框架
Go语言有非常成熟的Web框架,比如:
Beego: 一个Go语言下开源的,高性能Web框架;
Buffalo: 一个Go语言下快速Web开发框架;
Echo: 一个高性能,极简的Web框架;
Gin: 一个Go语言写的HTTP Web框架。它提供了Martini风格的API并有更好的性能;
Iris: 目前发展最快的Go Web框架。提供完整的MVC功能并且面向未来;
Revel: 一个高生产率,全栈Go语言的Web框架。

小型项目可以不用框架,用net/http包即可;大型项目,我们可以选择合适的Web框架——前人的杰作,既提高了开发效率,还能保证可靠性。

三.如何学习使用Go做Web开发呢?
老师强调了一点,我认为非常重要,那就是“阅读源代码”。
阅读源代码是学习 Go 的非常重要的步骤。 如何阅读源代码?这是一个非常复杂的话题,知识、经验和技巧都有很大作用。
首先我们应当了解Code Convention,熟悉Go的变量命名、注释、程序目录等的基本约定,这是我们能看懂源代码的基础;然后最好有一定的 OO 设计模式知识,这对正确理解优秀开源产品至关重要!再者,了解我们关注的产品的知识,例如 golang web 服务器的实现,必须会使用它,并了解基本使用必须去读官网文档,了解该内容的设计动机、设计理念。

阅读的顺序应当是,原理阅读(原理图、API文档等)–>细节阅读(类型、关键代码),然后我们可以动手试一试,甚至重写某个功能。这样循序渐进地阅读源码,对我们的Go语言学习大有裨益。