Welcome to the Go wiki, a collection of information about the Go Programming Language. Awesome Go is another great resource for Go programmers, curated by the Go community.
Questions about Go
See Questions.
Please do not ask questions by editing or creating a wiki page. Any such changes will be silently reverted.
Contributing
- This wiki is open to editing by any member of the Go community with a GitHub account.
- If you would like to add a new page, please first open an issue in the Go issue tracker with the prefix ‘wiki’ to propose the addition. Clearly state why the content does not fit into any of the existing pages.
- Because renaming of pages in the wiki can break external links, please open an issue before renaming or removing any wiki page.
Table of Contents
Getting started with Go
Working with Go
Ready to write some Go code of your own? Here are a few links to help you get started.
- Install and Setup your Environment
- Go IDEs and Editors - Information on how to use your favorite editor with Go.
- Tools for working with Go code - Formatting, linting, vetting, refactoring, navigation, and visualization.
- Finding Go Libraries and Packages
- Modules - documentation on the dependency management system built into the Go command, added in 1.11.
- Managing your dependencies - An overview of the tools you can use to manage third-party packages (vendoring).
- Publishing Go Packages as Open Source
Learning more about Go
Once you have an overview of the language, here are resources you can use to learn more.
- Learning Go - A collection of resources for learning Go - beginner to advanced.
- Books - A list of Go books that have been published (ebook, paper).
- Blogs - Blogs about Go.
- Podcasts - Podcasts and episodes featuring Go.
- Videos, Talks, and Presentations
- GopherVids (currently unreachable) is a searchable index of videos about Go.
- GoTalks - A collection of talks from Go conferences and meetups.
- Livestreams - live interactive Go project streams with members of the community.
- Screencasts
- Articles - A collection of articles to help you learn more about Go.
- Training - Free and commercial, online, and classroom training for Go.
- University Courses - A list of CS programs and classes using Go.
- Resources for non-English speakers
The Go Community
Here are some of the places where you can find Gophers online. To get a sense of what it means to be a member of the Go community, read Damian Gryski's keynote from the GolangUK 2015 conference or watch Andrew Gerrand's closing keynote from GopherCon 2015.
Using the Go Toolchain
Additional Go Programming Wikis
Online Services that work with Go
If you‘re looking for services that support Go, here’s a list to get you started.
- Cloud Computing - Go is well supported by most cloud service providers.
- Continuous Integration and Continuous Deployment - Go is well supported by most CI/CD frameworks
- Monitoring/Logging
- OpsDash - Go-based cluster monitoring platform.
- Package and Dependency Management
- Gopkg.in is a source for stable Go libraries, provided by Gustavo Niemeyer.
Troubleshooting Go Programs in Production
- Understand the performance of your Go apps using the pprof package
- Heap Dumps
- [[heapdump13]]
- [[heapdump14]]
- [[heapdump15-through-heapdump17]]
Contributing to the Go Project
Platform Specific Information
See MinimumRequirements for minimum platform requirements of current Go ports. Considering porting Go to a new platform? Read our porting policy first.
Notes:
- Please refrain from changing the title of the wiki pages, as some of them might be linked to from golang.org or other websites