-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Jason Buberel edited this page Aug 23, 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 tories. 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.
- 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 appliction depends on.
- Publishing Go Packages as Open Source
- Getting ready to publish your package? Start here.
-
How to layout your GitHub repo to make it easy to for other Go programmers to use with the
go get
command.
Once you have an overview of the language, here are resources you can use to learn more about the language.
- Books - A list of Go books that have been published (ebook, paper)
- Articles - A collection of articles to help you learn more about Go.
- Classes and Training
- Videos, Talks and Presentations
- GopherVids is a searchable index of videos about Go.
- GoTalks - A collection of talks from Go conferences and meetups.
- Screencasts
- 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.
- 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 discussios 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 Overvflow 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 Gohper 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.
- gohttplib - An experiment in using Go 1.5 buildmode=c-shared.
- Sharing Golang Packages to C - A tutorial by @ralch.
- 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
- Comments
- CommonMistakes
- Errors
- GcToolchainTricks
- GoForCPPProgrammers
- GoStrings
- 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 framworks
- Jenkins
- Travis
- Werker
- More information is available here
- 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
- 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.