文档

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

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

入门

安装 Go

下载和安装 Go 的说明。

教程:入门

一个简短的“Hello, World”入门教程。了解 Go 代码、工具、包和模块的基础知识。

教程:创建模块

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

教程:多模块工作区入门

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

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

介绍使用 Go 和 Gin Web 框架编写 RESTful Web 服务 API 的基本知识。

教程:泛型入门

使用泛型,您可以声明和使用编写为可处理调用代码提供的任何类型集合中的任何类型的函数或类型。

教程:模糊测试入门

模糊测试可以为您的测试生成输入,从而捕获您可能遗漏的边缘情况和安全问题。

编写 Web 应用

构建一个简单的 Web 应用。

如何编写 Go 代码

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

Go 语言之旅

Go 的互动式介绍,分为四个部分。第一部分涵盖基本语法和数据结构;第二部分讨论方法和接口;第三部分是关于泛型;第四部分介绍 Go 的并发原语。每个部分最后都有一些练习,以便您可以练习所学内容。您可以在线体验或使用以下命令在本地安装:

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

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

使用和理解 Go

Effective 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 和 channel)提供了一种简单有效的方式来表达并发执行。在本次讲座中,我们将看到如何使用简单的 Go 代码优雅地解决棘手的并发问题。

高级 Go 并发模式

本次讲座是《Go 并发模式》讲座的延伸,深入探讨 Go 的并发原语。

更多

请参阅 Go 讲座网站wiki 页面,了解更多 Go 讲座。

代码漫游

带导游的 Go 程序参观。

语言

模块

工具

维基

由 Go 社区维护的 Go Wiki 包含关于 Go 语言、工具和其他资源的文档。

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

非英文文档

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