概述
Go为Web应用程序提供速度、安全性和开发者友好的工具
Go语言旨在帮助开发者快速构建可扩展且安全的Web应用程序。Go自带一个易于使用、安全且高性能的Web服务器,并内置了其自身的Web模板库。Go对从HTTP/2到MySQL、MongoDB和Elasticsearch等数据库,乃至包括TLS 1.3在内的最新加密标准,都提供了出色的支持。得益于Go极强的可移植性,Go Web应用程序可原生运行在Google App Engine和Google Cloud Run(便于扩展)上,也可运行于任何环境、云或操作系统中。
主要优势
以前所未有的速度实现跨平台部署
对于企业而言,Go因其能实现快速的跨平台部署而备受青睐。凭借其goroutine(协程)、原生编译能力以及基于URI的包命名空间,Go代码可以编译成一个单独的、体积小的二进制文件——且零依赖——使其运行速度非常快。
利用Go开箱即用的性能轻松扩展
Hexact Inc.的联合创始人兼首席技术官Tigran Bayburtsyan总结了其公司转向Go的五个关键原因:
-
编译为单一二进制文件 —— “通过静态链接,Go实际上会将所有依赖库和模块根据操作系统类型和架构合并为一个单独的二进制文件。”
-
静态类型系统 —— “对于大规模应用程序,类型系统至关重要。”
-
性能 —— “由于其并发模型和CPU可扩展性,Go表现更佳。每当我们需要处理一些内部请求时,我们都会使用独立的Goroutine(协程),它们比Python线程在资源消耗上要便宜10倍。”
-
无需Web框架 —— “在大多数情况下,你确实不需要任何第三方库。”
-
卓越的IDE支持与调试能力 —— “在将所有项目重写为Go后,我们的代码量比以前减少了64%。”## 开始学习 {#get-started .sectionHeading}
Web开发相关的Go语言书籍
Web框架
-
Echo
高性能、可扩展且极简的Go Web框架
-
Flamingo
基于Go语言的快速开源框架,具备清晰可扩展的架构
-
Gin
用Go编写的Web框架,具有类似Martini的API
-
Gorilla
面向Go编程语言的Web工具包
路由器
-
net/http
标准库HTTP包
-
julienschmidt/httprouter
轻量级高性能HTTP请求路由器
-
gorilla/mux
强大的HTTP路由器和URL匹配器,用于构建Go Web服务器 🦍
-
Chi
轻量级、符合Go语言习惯且可组合的路由器,用于构建Go HTTP服务
数据库与驱动
-
database/sql
标准库接口,支持MySQL、PostgreSQL、Oracle、MS SQL、BigQuery及大多数SQL数据库的驱动
-
mongo-driver/mongo
MongoDB官方支持的Go驱动程序
-
elastic/go-elasticsearch
面向Go语言的Elasticsearch客户端
-
GORM
面向Go语言的ORM库
-
Bleve
面向Go语言的全文搜索与索引
-
CockroachDB
数据库技术的革新——专为云环境设计,提供弹性、一致、分布式的规模化SQL服务
Web库
-
markbates/goth
Web应用身份验证库
-
jinzhu/gorm
面向Go语言的ORM库
-
dgrijalva/jwt-go
JSON Web Tokens的Go语言实现
课程
- 学习使用Go创建Web应用,付费在线课程
项目
- gopherjs,将Go语言编译为JavaScript的编译器,允许开发者使用Go编写可在所有浏览器中运行的前端代码
- Hugo,全球最快的网站构建框架
- Mattermost,灵活、开源的即时通讯平台,支持安全团队协作
- Caddy,强大的、企业级就绪的开源Web服务器,支持自动HTTPS,使用Go编写