文档

Go 编程语言是一个开源项目,旨在提高程序员的生产力。

Go 表达力强、简洁、干净且高效。其并发机制使编写能充分利用多核和联网机器的程序变得容易,而其新颖的类型系统则支持灵活且模块化的程序构建。Go 可快速编译为机器代码,但具有垃圾回收的便利性和运行时反射的功能。它是一种快速、静态类型、编译语言,但感觉像是一种动态类型、解释语言。

入门

安装 Go

下载和安装 Go 的说明。

教程:入门

一个简短的 Hello, World 教程,帮助您入门。了解有关 Go 代码、工具、软件包和模块的一些知识。

教程:创建模块

一个简短主题教程,介绍函数、错误处理、数组、映射、单元测试和编译。

教程:开始使用多模块工作区

介绍在 Go 中创建和使用多模块工作区的基础知识。多模块工作区可用于跨多个模块进行更改。

教程:使用 Go 和 Gin 开发 RESTful API

介绍使用 Go 和 Gin Web Framework 编写 RESTful Web 服务 API 的基础知识。

教程:开始使用泛型

使用泛型,您可以声明和使用编写为可使用调用代码提供的任何一组类型的功能或类型。

教程:开始使用模糊测试

模糊测试可以为您的测试生成输入,从而可以发现您可能错过的边缘情况和安全问题。

编写 Web 应用程序

构建简单的 Web 应用程序。

如何编写 Go 代码

此文档介绍如何在模块中开发一组简单的 Go 包,并展示如何使用 go 命令 构建和测试包。

Go 之旅

分四个部分对 Go 进行交互式介绍。第一部分涵盖基本语法和数据结构;第二部分讨论方法和接口;第三部分介绍泛型;第四部分介绍 Go 的并发原语。每节都以一些练习结束,以便您可以练习所学内容。您可以 在线参加该之旅 或使用以下命令在本地安装它

	$ go install golang.org/x/website/tour@latest
	

这会将 tour 二进制文件放在您的 GOPATHbin 目录中。

使用和理解 Go

有效的 Go

提供编写清晰、惯用 Go 代码的提示的文档。对于任何新的 Go 程序员来说,这是必读内容。它补充了该之旅和语言规范,这两个内容都应首先阅读。

常见问题解答 (FAQ)

回答有关 Go 的常见问题。

编辑器插件和 IDE

总结了常用的支持 Go 的编辑器插件和 IDE 的文档。

诊断

总结了诊断 Go 程序中问题的工具和方法。

Go 垃圾回收器指南

描述 Go 如何管理内存以及如何充分利用它的文档。

管理依赖项

当您的代码使用外部包时,这些包(作为模块分发)将成为依赖项。

模糊测试

Go 模糊测试的主要文档页面。

Go 应用程序的覆盖范围

Go 应用程序覆盖率测试的主要文档页面。

基于配置文件的优化

Go 应用程序基于配置文件的优化 (PGO) 的主要文档页面。

参考

软件包文档

Go 标准库的文档。

命令文档

Go 工具的文档。

语言规范

Go 语言的官方规范。

Go 模块参考

Go 依赖管理系统的详细参考手册。

go.mod 文件参考

go.mod 文件中包含的指令参考。

Go 内存模型

指定在哪些条件下,可以保证在一个 goroutine 中读取变量的值,以观察在另一个 goroutine 中对同一变量的写入产生的值。

贡献指南

为 Go 做出贡献。

发行历史记录

Go 发行版之间更改的摘要。

访问数据库

教程:访问关系数据库

介绍使用 Go 和标准库中的 database/sql 软件包访问关系数据库的基础知识。

访问关系数据库

Go 数据访问功能的概述。

打开数据库句柄

使用 Go 数据库句柄执行数据库操作。使用数据库连接属性打开句柄后,该句柄代表它代表你管理的连接池。

执行不返回数据的 SQL 语句

对于可能更改数据库的 SQL 操作,包括 SQL INSERTUPDATEDELETE,使用 Exec 方法。

查询数据

对于从查询返回数据的 SELECT 语句,使用 QueryQueryRow 方法。

使用预处理语句

为重复使用定义预处理语句可以通过避免每次代码执行数据库操作时重新创建语句的开销,帮助你的代码运行得更快一些。

执行事务

sql.Tx 导出表示事务特定语义的方法,包括 CommitRollback,以及用于执行常见数据库操作的方法。

取消正在进行的数据库操作

使用 context.Context,可以使应用程序的函数调用和服务在不再需要其处理时提前停止工作并返回错误。

管理连接

对于一些高级程序,您可能需要调整连接池参数或显式使用连接。

避免 SQL 注入风险

您可以通过将 SQL 参数值作为 sql 包函数参数来避免 SQL 注入风险

开发模块

开发和发布模块

您可以将相关包收集到模块中,然后发布模块供其他开发人员使用。本主题概述了如何开发和发布模块。

模块发布和版本控制工作流

当您开发供其他开发人员使用的模块时,您可以遵循一个工作流,该工作流有助于确保使用该模块的开发人员获得可靠且一致的体验。本主题描述了该工作流中的高级步骤。

管理模块源

当您开发要发布供他人使用的模块时,您可以通过遵循本主题中描述的存储库约定来帮助确保其他开发人员更容易使用您的模块。

组织 Go 模块

在典型的 Go 项目中组织文件和目录的正确方法是什么?本主题讨论了一些常见布局,具体取决于您拥有的模块类型。

开发主要版本更新

主要版本更新可能会对模块的用户造成很大影响,因为它包括重大更改并代表一个新模块。在本文档中了解更多信息。

发布模块

当您想让其他开发人员可以使用某个模块时,请发布该模块,以便 Go 工具可以看到它。一旦您发布了该模块,导入其包的开发人员将能够通过运行诸如 go get 之类的命令来解决对该模块的依赖关系。

模块版本编号

模块的开发人员使用模块版本号的每个部分来表示该版本的稳定性和向后兼容性。对于每个新版本,模块的发布版本号具体反映了自前一个版本以来模块更改的性质。

演讲

Go 视频导览

让 Go 变得快速、有趣且高效的三件事:接口、反射和并发。构建一个玩具网络爬虫来演示这些内容。

优雅地扩展代码

Go 的主要设计目标之一是代码适应性;它应该可以轻松地采用一个简单的设计,并以一种干净自然的方式对其进行构建。在本次演讲中,Andrew Gerrand 描述了一个简单的“聊天轮盘”服务器,它匹配一对传入的 TCP 连接,然后使用 Go 的并发机制、接口和标准库对其进行扩展,添加 Web 界面和其他功能。虽然程序的功能发生了巨大变化,但 Go 的灵活性在程序不断发展时保留了原始设计。

Go 并发模式

并发是设计高性能网络服务的关键。Go 的并发原语(goroutine 和通道)提供了一种简单高效的方法来表示并发执行。在本次演讲中,我们将看到如何使用简单的 Go 代码优雅地解决棘手的并发问题。

高级 Go 并发模式

本次演讲扩展了《Go 并发模式》演讲,深入探讨了 Go 的并发原语。

更多

请参阅 Go Talks 网站wiki 页面,了解有关 Go 的更多演讲。

代码演练

Go 程序的导览。

语言

软件包

模块

工具

Wiki

Go Wiki 由 Go 社区维护,其中包含有关 Go 语言、工具和其他资源的文章。

请参阅 Wiki 上的 学习 页面,以获取更多 Go 学习资源。

非英语文档

请参阅 Wiki 上的 非英语 页面,以获取本地化文档。