-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Jérôme Duval edited this page Sep 2, 2015
·
44 revisions
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.
- Getting started with Go
- Working with Go
- Learning more about Go
- The Go Community
- Using the go toolchain
- Additional Go Programming Wikis
- Onlines Services that work with Go
- Troubleshooting Go Programs in Production
- Contributing to the Go Project
- Platform Specific Information
- Release Specific Information
- The Go Tour is the best place to start.
- Effective Go will help you learn how to write idiomatic Go code.
- Go standard library documentation to familiarize yourself with the standard library.
- Use the Go Playground to test out Go programs in your browser.
- Still not convinced? Check out this list of Go Users and a few of their Success stories. We've also assembled a long list of reasons why you should give Go a try.
Ready to write some Go code of your own? Here are a few links to help you get started.
- Install and Setup your Environment
- Start here: Official Installation Documentation
- If you prefer to install from source, read this first.
- InstallFromSource - Additional tips on source installs.
- Having installation problems? InstallTroubleShooting
- Make sure you have your $GOPATH environment variable set correctly
- If you need additional tips on using $GOPATH, go here.
-
MultipleGoRoots - More advanced information on working with multiple go installations and the
$GOROOT
variable.
- Go IDEs and Editors - Information on how to use your favorite editor with Go.
- Tools for working with Go code - Formatting, linting, vetting, refactoring.
- Finding Go Libraries & Tools
- Start by searching godoc.org
- Then check this list of Go open source projects for additional search tools and curated lists.
- Managing your dependencies - An overview of the tools you can use to manage the libraries that your application depends on.
- Publishing Go Packages as Open Source
- Getting ready to publish your package? Start here.
- The Go Checklist - A comprehensive guide for publishing a project.
-
How to layout your GitHub repo to make it easy to for other Go programmers to use with the
go get
command. - Go Package, Go - A few recommendations for making Go packages easy to use.
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.
- Best Practices for a New Go Developer - Insights from Go community members.
- Server programming - Building web, mobile, and API servers.
- The Go Bridge Foundry - A member of the Bridge Foundry family, offering a complete set of free Go training materials with the goal of bringing Go to underrepresented communities.
- More on concurrency
- More on error handling
- More on testing
- More on mobile - Android and iOS
- Books - A list of Go books that have been published (ebook, paper)
- Videos, Talks and Presentations
- GopherVids is a searchable index of videos about Go.
- GoTalks - A collection of talks from Go conferences and meetups.
- Screencasts
- Blogs and Podcasts - Go programming blogs and episodes.
- 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
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 GolankUK 2015 conference or watch Andrew Gerrand's closing keynote from GopherCon 2015.
- Mailing Lists
- The mailing list for Go users is golang-nuts - very high traffic.
- Before you post, check to see if it's already been answered, then read these tips on how to ask a good question
- For discussions about the core Go open source project, join golang-dev.
- To get just our release announcements, join golang-announce
- The mailing list for Go users is golang-nuts - very high traffic.
- Chat, discussion and other forums
- We have a Gophers Slack Channel. Requires you to request membership here
- For IRC fans there is #go-nuts on irc.freenode.net which is indexed here.
- There is also a /r/golang sub-reddit.
- On Twitter, follow the @golang account and keep tabs on the #golang hashtag.
- We've also got a landing page on Stack Overflow for Go Q&A.
- User Groups & Meetups - There are Go Meetups in many cities
- See here for additional information GoUserGroups
- Conferences - A list of upcoming and past Go conferences and major events.
- A comprehensive list of companies using Go: Go Users
- Learn more about the Go Gopher images by Renee French.
- Start with the standard documentation for the
go
command available here - Using the Go 1.5
GO15VENDOREXPERIMENT
- Start here for the official documentation.
- Overview with examples by @freeformz.
- See also PackageManagementTools for additional details.
- Shared libraries and Go (buildmode)
- Go Shared Libraries - Examples for creating and using shared libraries from Go and Python.
- gohttplib - An experiment in using Go 1.5 buildmode=c-shared.
- Sharing Golang Packages to C - A tutorial by @ralch.
- Calling Go libraries from Python - by Filippo Valsorda
- Calling Go libraries from Ruby - by Peter Hellberg
- See the wikis below for additional details:
- Why Go doesn't Support Generics: A Summary of Go Generics Discussions - Start here before you join the debate.
- Concurrency
- Timeouts - Abandon async calls that take too long
- LockOSThread
- MutexOrChannel - When to use one vs the other
- RaceDetector - How to detect and fix race conditions
- Working with Databases
- database/sql - Online tutorial for working with the database/sql package.
- TUGTBDDAwG - Guide to building data driven apps.
- SQLDrivers
- SQLInterface
- From other languages
- Strings
- Comments
- CommonMistakes
- Errors
- GcToolchainTricks
- Hashing
- HttpFetch
- HttpStaticFiles
- InterfaceSlice
- Iota
- MethodSets
- PanicAndRecover
- Range
- RateLimiting
- Rationales
- SendingMail
- SignalHandling
- SimultaneousAssignment
- SliceTricks
- Switch
- TableDrivenTests
If you're looking for services that support Go, here's a list to get you started.
- Cloud Computing - Go is well supported on most cloud service providers.
- Continuous Integration and Continuous Deployment - Go is well supported by most CI/CD frameworks
- Monitoring/Logging
- DeferPanic - Dedicated Go application performance monitoring.
- Package and Dependency Management
- Gopkg.in is a source for stable Go libraries, provided by Gustavo Niemeyer.
- Stable Lib is a service that provides stable Go packages with long-term support.
- Understand the performance of you Go apps using the pprof package
- Heap Dumps
- Start by reading the Go Contribution Guidelines
- If you'd like to propose a change to the Go project, start by reading the Go Change Proposal Process
- An archive of design documents is also available
- Go releases happen on ~6 month intervals. See here for more information
- Want to know more about how the Go source sub-repositories are structured?
- The Go project requires that all code be reviewed before it is submitted.
- Read more about our code review practices
- If you're commenting on code under review, please read these guidelines
- Issues
- Bug reports and feature requests should be filed using the GitHub issue tracker
- Want to understand how we handle issues that are reported?
- Project Dashboards
- Considering porting Go to a new platform? Read our porting policy first
- Mobile
- Ubuntu
- Windows
- GoArm
- ChromeOS
- NetBSD
- OpenBSD
- FreeBSD
- Haiku
- NativeClient
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.