概述
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 实际上根据操作系统类型和架构将所有依赖库和模块组合成一个二进制文件.”
-
静态类型系统 — “类型系统对于大规模应用非常重要.”
-
性能 — “Go 的性能更好,因为它的并发模型和 CPU 可扩展性。每当我们需要处理一些内部请求时,我们都会使用单独的 Goroutines 来完成,这些 Goroutines 的资源比 Python Threads 便宜 10 倍.”
-
不需要web框架 — “在大多数情况下,你真的不需要任何第三方库.”
-
出色的 IDE 支持和调试 — “在将所有项目重写为 Go 之后,我们得到的代码比之前少了 64%.”
精选用户
客户 | 简单介绍 | 使用 go 的项目 |
---|---|---|
Caddy 2 是一个强大的、企业就绪的、开源的 Web 服务器,具有用 Go 编写的自动 HTTPS。Caddy 比用 C 编写的服务器提供更高的内存安全性。由 Go 标准库提供支持的强化 TLS 栈服务于所有 Internet 流量的很大一部分. | ||
Cloudflare 加速并保护数百万个网站、API、SaaS 服务和其他连接到 Internet 的资产。“Go 是 CloudFlare 服务的核心,包括处理高延迟 HTTP 连接的压缩、我们的整个 DNS 基础设施、SSL、负载测试等等.” | ||
Go 语言的简单性和安全性非常适合英国政府的 HTTP 基础设施,并且对优秀的 net/http 包进行了一些简短的实验,使 Web 开发人员确信他们走在正确的轨道上。“特别是,Go 的并发模型使得构建高性能的 I/O 绑定应用程序变得异常容易.” | ||
Hugo 是一个用 Go 编写的快速而现代的网站引擎,旨在让网站创建再次变得有趣。使用 Hugo 构建的网站非常快速和安全,可以在任何地方托管而没有任何依赖. | ||
Mattermost 是一个灵活的开源消息传递平台,可实现安全的团队协作。它是用 Go 和 React 编写的. | ||
Medium 使用 Go 来支持他们的社交图谱、图像服务器和一些辅助服务。“我们发现 Go 非常易于构建、打包和部署。我们喜欢没有 Java 冗长和 JVM 调优的类型安全性.” | ||
《经济学人》需要更大的灵活性来向日益多样化的数字渠道提供内容。用 Go 编写的服务是新系统的一个关键组件,它将使《经济学人》能够提供可扩展的高性能服务并快速迭代新产品。“总的来说,确定 Go 是为分布式、基于云的系统中的可用性和效率而设计的最佳语言.” |
开始
Go Web 开发方面的书籍
Web框架
-
Buffalo
在 Go 中进行快速 Web 开发的框架,将 Go 和 JS 库组合在一起.
-
Echo
一个高性能、可扩展、极简的 Go web 框架
-
Flamingo
一个基于 Go 的快速开源框架,具有干净且可扩展的架构
-
Gin
用 Go 编写的 Web 框架,具有类似martini的 API.
-
Gorilla
Go 编程语言的Web工具包.
路由
-
julienschmidt/httprouter
一个轻量级的高性能 HTTP 请求路由
-
gorilla/mux
一个强大的 HTTP 路由器和 URL 匹配器,用于使用 🦍 构建 Go web服务
-
Chi
用于构建 Go HTTP 服务的轻量级、惯用且可组合的路由组件.
-
net/http
一个标准库 HTTP 包
数据库和驱动
-
database/sql
标准库接口,支持 MySQL、Postgres、Oracle、MS SQL、BigQuery 和大多数 SQL 数据库的驱动程序
-
mongo-driver/mongo
MongoDB 的 Go 驱动程序
-
olivere/elastic
一个用于 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 服务器,具有用 Go 编写的自动 HTTPS