概述
Go 为 Web 应用程序提供速度、安全性和对开发者友好的工具
Go 的设计旨在使开发人员能够快速开发可扩展且安全的 Web 应用程序。Go 附带一个易于使用、安全且高效的 Web 服务器,并包含自己的 Web 模板库。Go 对所有最新技术都具有出色的支持,从 HTTP/2 到数据库,例如 MySQL、MongoDB 和 Elasticsearch,再到最新的加密标准,包括 TLS 1.3。Go Web 应用程序可以在 Google App Engine 和 Google Cloud Run(用于轻松扩展)或任何环境、云或操作系统上本地运行,这得益于 Go 极高的可移植性。
主要优势
以创纪录的速度跨平台部署
对于企业来说,Go 是提供快速跨平台部署的首选语言。凭借其协程、原生编译和基于 URI 的包命名空间,Go 代码编译成单个小型二进制文件(没有依赖项),使其速度非常快。
利用 Go 的开箱即用性能轻松扩展
Hexact Inc. 的联合创始人兼 CTO Tigran Bayburtsyan 总结了该公司转向 Go 的五个关键原因
-
编译成单个二进制文件 — “使用静态链接,Go 实际上将所有依赖库和模块组合成一个基于操作系统类型和体系结构的单个二进制文件。”
-
静态类型系统 — “类型系统对于大型应用程序非常重要。”
-
性能 — “Go 的性能更好,因为它的并发模型和 CPU 可扩展性。无论何时我们需要处理一些内部请求,我们都使用单独的协程来处理,协程比 Python 线程在资源方面便宜 10 倍。”
-
不需要 Web 框架 — “在大多数情况下,你真的不需要任何第三方库。”
-
强大的 IDE 支持和调试 — “在将所有项目重写为 Go 之后,我们得到的代码量比以前减少了 64%。”
特色用户
客户 | 简介 | 使用 Go 的项目 |
---|---|---|
Caddy 2 是一款功能强大、企业级、开源的 Web 服务器,支持自动 HTTPS,用 Go 编写。Caddy 提供比用 C 编写的服务器更高的内存安全性。由 Go 标准库提供支持的强化 TLS 堆栈为互联网上很大一部分的流量提供服务。 | ||
Cloudflare 为连接到互联网的数百万个网站、API、SaaS 服务和其他属性加速并保护它们。“Go 是 CloudFlare 服务的核心,包括处理高延迟 HTTP 连接的压缩、整个 DNS 基础设施、SSL、负载测试等等。” | ||
Go 语言的简洁性和安全性非常适合英国政府的 HTTP 基础设施,对出色的 net/http 包进行了一些简短的实验,说服了 Web 开发人员他们走在了正确的道路上。“尤其是,Go 的并发模型使得构建高性能 I/O 密集型应用程序变得极其容易。” | ||
Hugo 是一款用 Go 编写的快速、现代的网站引擎,旨在让网站创建再次变得有趣。使用 Hugo 构建的网站速度极快且安全,可以托管在任何地方,无需任何依赖项。 | ||
Mattermost 是一款灵活的开源消息平台,可实现安全的团队协作。它用 Go 和 React 编写。 | ||
Medium 使用 Go 为其社交图谱、图像服务器和多个辅助服务提供支持。“我们发现 Go 非常容易构建、打包和部署。我们喜欢它在没有 Java 的冗长和 JVM 调优的情况下提供类型安全。” | ||
The Economist 需要更大的灵活性,才能将内容交付给越来越多样化的数字渠道。用 Go 编写的服务是新系统的一个关键组成部分,该系统将使 The Economist 能够提供可扩展、高性能的服务并快速迭代新产品。“总的来说,Go 被认为是最适合在分布式云系统中实现可用性和效率的语言。” |
入门
Go Web 开发书籍
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 HTTP 服务。
数据库和驱动程序
-
database/sql
一个标准库接口,支持 MySQL、Postgres、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 令牌的 Go 实现
课程
- 学习使用 Go 创建 Web 应用程序,付费在线课程
项目
- gopherjs,从 Go 到 JavaScript 的编译器,使开发人员能够使用 Go 编写前端代码,这些代码将在所有浏览器中运行。
- Hugo,世界上最快的网站构建框架
- Mattermost,一个灵活的开源消息平台,可实现安全的团队协作
- Caddy,一款功能强大、企业级、开源的 Web 服务器,支持自动 HTTPS,用 Go 编写