Go Wiki: 主页
欢迎来到 Go Wiki,这是关于 Go 编程语言的信息集合。 Awesome Go 是 Go 社区维护的另一个很棒的 Go 程序员资源。
如果您在本页找不到所需信息,请查看所有页面列表。
关于 Go 的问题
请参见 Questions。
贡献
- 如果您想添加新页面,请先在 Go issue tracker 中提交一个以
wiki:
为前缀的 issue 来提议添加。清楚说明内容为何不适合任何现有页面。 - 由于 wiki 页面重命名可能会破坏外部链接,请在重命名或删除任何 wiki 页面之前提交 issue。
有关贡献的更多信息,请参见 Contributing。
目录
- Go 入门
- 使用 Go
- 深入学习 Go
- Go 社区
- 使用 Go 工具链
- 其他 Go 编程 Wiki
- 与 Go 协同工作的在线服务
- 生产环境中 Go 程序的故障排除
- 向 Go 项目贡献
- 特定平台信息
- 特定版本信息
- 问题
Go 入门
- Go Tour 是最好的入门途径。
- Effective Go 将帮助您学习如何编写地道的 Go 代码。
- Go 标准库文档,帮助您熟悉标准库。
- 使用 Go Playground 在浏览器中测试 Go 程序。
- 仍然不相信?看看这个 Go 用户列表以及他们的一些成功案例。我们还整理了许多值得您尝试 Go 的理由。
- 了解那些从其他语言转向 Go 的公司。
使用 Go
准备好编写自己的 Go 代码了吗?这里有一些链接可以帮助您入门。
- 安装和设置环境
- 从这里开始:官方安装文档
- 如果您更喜欢从源代码安装,请先阅读此内容。
- InstallFromSource - 源代码安装的额外技巧。
- Windows 用户?安装和配置 Go、Git 和 Visual Studio Code for Windows
- Mac 用户?我的 Go 入门方式 - Go - 安装 Go 并构建您的第一个 Web 服务的逐步指南。
- 遇到安装问题?InstallTroubleshooting
- 确保您的 $GOPATH 环境变量设置正确
- 如果您需要使用 $GOPATH 的更多技巧,请访问这里。
- Go IDE 和编辑器 - 关于如何使用您喜欢的编辑器处理 Go 的信息。
- 用于处理 Go 代码的工具 - 格式化、Linting、审查、重构、导航和可视化。
- 查找 Go 库和软件包
- 从这里开始:Go 开源项目。
- 搜索 Go 软件包:pkg.go.dev
- Go 开源软件包图的可视化
- 模块 - 关于 Go 命令中内置的依赖管理系统(在 1.11 中添加)的文档。
- 将 Go 软件包作为开源项目发布
- 准备好发布您的软件包了吗?从这里开始。
- Go Checklist - 发布项目的全面指南。
- Go Package, Go - 关于如何使 Go 软件包易于使用的一些建议。
深入学习 Go
对语言有了概览后,这里有一些资源可以帮助您深入学习。
- 学习 Go - Go 学习资源合集 - 从初级到高级。
- Go 新手开发者的最佳实践 - 来自 Go 社区成员的见解。
- 服务器编程 - 构建 Web、移动和 API 服务器。
- 关于并发的更多信息
- 关于错误处理的更多信息
- 关于测试的更多信息
- 关于移动开发 - Android 和 iOS 的更多信息
- 书籍 - 已出版的 Go 书籍列表(电子书、纸质书)。
- 博客 - 关于 Go 的博客。
- 播客 - 关于 Go 的播客和节目。
- 视频、讲座和演示文稿
- 文章 - 帮助您深入学习 Go 的文章合集。
- 培训 - Go 的免费和商业、在线和课堂培训。
- 大学课程 - 使用 Go 的计算机科学项目和课程列表。
- 非英语使用者的资源
Go 社区
这里有一些您可以在线找到 Gophers 的地方。要了解成为 Go 社区一员的意义,请阅读 Damian Gryski 在 GolangUK 2015 大会上的主题演讲,或观看 Andrew Gerrand 在 GopherCon 2015 上的闭幕主题演讲。
- Gophers 在线聚集地
- Go 论坛 - Go 社区的多功能讨论论坛。
- Gophers Slack 频道 - 用于实时聊天(申请加入)。
- Golang 新闻 - 关于 Go 编程的精选链接。
- 还有一个 /r/golang 子版块(sub-reddit)。
- 在 Mastodon 上,关注 @golang 帐户并留意 #golang 标签。
- 在 Twitter 上,关注 @golang 帐户并留意 #golang 标签。
- 我们在 Stack Overflow 上也有一个 Go 问答页面。
- Matrix 爱好者受邀加入 #Go:matrix.org。
- 欢迎 Discord 用户加入 Discord Gophers 服务器。
- Hashnode 用户在 Hashnode Go 社区中讨论和撰写关于 Go 的文章。
- 邮件列表
- Go 用户邮件列表是 golang-nuts - 流量很高。
- 在发帖之前,先查看是否已有答案,然后阅读这些关于如何提出好问题的技巧
- 要讨论核心 Go 开源项目,请加入 golang-dev。
- 只想获取我们的发布公告,请加入 golang-announce
- Go 用户邮件列表是 golang-nuts - 流量很高。
- 用户组和线下聚会 - 许多城市都有 Go 线下聚会
- GoBridge - 志愿者帮助代表性不足的社区传授技术技能,促进 Go 社区的多样性。
- Go 女性开发者
- 有关 GoUserGroups 的更多信息,请参见这里
- GoDiscourse - Go Discourse 是一个基于 Go 的开源论坛,源自
hello world
项目。
- 大会 - 未来和过去 Go 大会及重要活动列表。
- 使用 Go 的公司 - 全球使用 Go 的公司完整列表。
- 了解更多关于 Renee French 创作的Go Gopher 图片。
使用 Go 工具链
- 从这里提供的
go
命令标准文档开始 - 从这里开始了解 vendoring。
- 交叉编译
- 共享库和 Go (buildmode)
- Go 共享库 - 从 Go 和 Python 创建和使用共享库的示例。
- 与 C 共享 Go 软件包 - 作者:Svetlin Ralchev
- 从 Python 调用 Go 库 - 作者:Filippo Valsorda
- 从 Ruby 调用 Go 库 - 作者:Peter Hellberg
- 从 Swift 调用 Go 库 - 作者:Jaana Burcu Dogan
- gohttplib - 使用 Go 1.5 buildmode=c-shared 的实验。
- 有关更多详细信息,请参见下面的 wiki
- GoGetTools
- GoGetProxyConfig
- cgo
- CompilerOptimizations
- GccgoCrossCompilation
- GcToolchainTricks
- GoGenerateTools
- Go 工具基础 - 作者:Jaana Burcu Dogan
其他 Go 编程 Wiki
-
AI
- AI - 从 Go 访问 AI(人工智能)和 LLM(大型语言模型)服务
-
并发
- 超时 - 放弃耗时过长的异步调用
- LockOSThread
- Mutex 或 Channel - 何时使用哪个
- 竞态条件检测器 - 如何检测和修复竞态条件
-
使用数据库
- database/sql - 关于使用 database/sql 包的在线教程。
- SQLDrivers
- SQLInterface
-
针对其他语言开发者
-
字符串
与 Go 协同工作的在线服务
如果您正在寻找支持 Go 的服务,这里有一个列表供您参考。
- 云计算 - 大多数云服务提供商都很好地支持 Go。
- 持续集成和持续部署 - 大多数 CI/CD 框架都很好地支持 Go
- 监控/日志记录
- OpsDash - 基于 Go 的集群监控平台。
- 软件包和依赖管理
- Gopkg.in 是一个稳定的 Go 库来源,由 Gustavo Niemeyer 提供。
生产环境中 Go 程序的故障排除
- 使用 pprof 软件包了解您的 Go 应用性能
- 堆转储
向 Go 项目贡献
- 首先阅读 Go 贡献指南
- 如果您想对 Go 项目提出更改建议,请首先阅读 Go 变更提案流程
- 设计文档存档也可用
- Go 版本大约每 6 个月发布一次。有关更多信息,请参见此处
- 想了解 Go 源代码 X-repositories 的结构吗?
- Go 项目要求所有代码在提交前都经过评审。
- 问题
- 错误报告和功能请求应使用 GitHub issue tracker 提交
- 想了解我们如何处理报告的问题吗?
- 项目仪表盘
特定平台信息
有关当前 Go 移植版本的最低平台要求,请参见 MinimumRequirements。正在考虑将 Go 移植到新平台?请先阅读我们的移植政策。
备注
- 请不要更改 wiki 页面的标题,因为其中一些可能被 golang.org 或其他网站链接引用
此内容是 Go Wiki 的一部分。