Go中文文档

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 install golang.org/x/website/tour@latest

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

使用和理解 Go

Effective Go

一份文档,提供了编写清晰、惯用的 Go 代码的技巧。任何新的 Go 程序员都必须阅读。它扩充了学边学练和语言规范,两者都应该先阅读.

编辑器插件和 IDE

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

诊断

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

管理依赖

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

模糊测试

Go fuzzing 的主要文档页面.

访问数据库

教程:访问关系数据库

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

访问关系数据库

Go 的数据访问功能概述.

打开数据库句柄

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

执行不返回数据的 SQL 语句

对于SQL操作可能更改数据库,包括SQL INSERT, UPDATE, 和 DELETE,请使用Exec的方法.

查询数据

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

使用预处理语句

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

执行事务

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

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

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

管理连接

对于某些高级程序,您可能需要调整连接池参数或明确处理连接.

避免SQL注入风险

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

开发模块

开发和发布模块

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

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

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

管理模块源

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

开发主要版本更新

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

发布模块

如果要使模块可供其他开发人员使用,请发布该模块,以便对 Go 工具可见。发布模块后,导入其包的开发人员将能够通过运行诸如go get之类的命令来解决对模块的依赖性.

模块版本编号

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

常见问题 (FAQ)

关于 Go 的常见问题的解答.

参考

包文档

Go 标准库的文档.

命令文档

Go 工具的文档.

语言规范(Go语法手册)

官方 Go 语言规范.

Go 模块参考

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

go.mod文件参考

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

Go内存模型

一个文档,它指定了在哪个条件下可以保证在一个 goroutine 中读取变量可以观察到在不同 goroutine 中写入相同变量所产生的值.

贡献指南

为Go做贡献.

发布历史

Go 版本之间更改的摘要.

代码漫步

Go 程序的导览.

来自 Go 博客

Go 项目的官方博客,包含 Go 团队和嘉宾的新闻和深度文章

语言

模块

工具

Wiki

Go Wiki,由Go社区维护,包括有关Go语言,工具和其他资源的文章.

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

演讲

一个Go视频指南

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

优雅成长的代码

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

Go 并发模式

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

高级 Go 并发模式

本演讲扩展了Go 并发模式演讲,以深入了解 Go 的并发原语.

更多

请参阅Go Talks site 站点和wiki 页面以获取更多 Go 讲座.