|
1 | 1 | ---
|
2 |
| -title: Home |
| 2 | +redirect: /wiki/ |
3 | 3 | ---
|
4 |
| - |
5 |
| -Welcome to the Go wiki, a collection of information about the [Go Programming Language](https://go.dev/). [Awesome Go](http://awesome-go.com/) is another great resource for Go programmers, curated by the Go community. |
6 |
| - |
7 |
| -## Questions about Go |
8 |
| - |
9 |
| -See [Questions](Questions). |
10 |
| - |
11 |
| -Please do not ask questions by editing or creating a wiki page. Any such changes will be silently reverted. |
12 |
| - |
13 |
| -## Contributing |
14 |
| - |
15 |
| -- This wiki is open to editing by any member of the Go community with a GitHub account. |
16 |
| -- If you would like to add a new page, please first open an issue in the [Go issue tracker](https://github.com/golang/go/issues) with the prefix 'wiki' to propose the addition. Clearly state why the content does not fit into any of the existing pages. |
17 |
| -- Because renaming of pages in the wiki can break external links, please open an issue before renaming or removing any wiki page. |
18 |
| - |
19 |
| -# Table of Contents |
20 |
| - |
21 |
| -- [Getting started with Go](#getting-started-with-go) |
22 |
| -- [Working with Go](#working-with-go) |
23 |
| -- [Learning more about Go](#learning-more-about-go) |
24 |
| -- [The Go Community](#the-go-community) |
25 |
| -- [Using the go toolchain](#using-the-go-toolchain) |
26 |
| -- [Additional Go Programming Wikis](#additional-go-programming-wikis) |
27 |
| -- [Online Services that work with Go](#online-services-that-work-with-go) |
28 |
| -- [Troubleshooting Go Programs in Production](#troubleshooting-go-programs-in-production) |
29 |
| -- [Contributing to the Go Project](#contributing-to-the-go-project) |
30 |
| -- [Platform Specific Information](#platform-specific-information) |
31 |
| -- [Release Specific Information](#release-specific-information) |
32 |
| -- [Questions](Questions) |
33 |
| - |
34 |
| -## Getting started with Go |
35 |
| - |
36 |
| -- [The Go Tour](https://go.dev/tour/) is the best place to start. |
37 |
| -- [Effective Go](https://go.dev/doc/effective_go) will help you learn how to write idiomatic Go code. |
38 |
| -- [Go standard library documentation](https://pkg.go.dev/std) to familiarize yourself with the standard library. |
39 |
| -- [Use the Go Playground](https://go.dev/play) to test out Go programs in your browser. |
40 |
| -- Still not convinced? Check out this list of [Go Users](GoUsers) and a few of their [Success stories](SuccessStories). We've also assembled a long list of reasons [why you should give Go a try](whygo). |
41 |
| -- Read about the companies which have [switched from other languages to Go](/wiki/FromXToGo). |
42 |
| - |
43 |
| -## Working with Go |
44 |
| - |
45 |
| -Ready to write some Go code of your own? Here are a few links to help you get started. |
46 |
| - |
47 |
| -- Install and Setup your Environment |
48 |
| - - Start here: [Official Installation Documentation](https://go.dev/doc/install) |
49 |
| - - If you prefer to install from source, [read this first](https://go.dev/doc/install/source). |
50 |
| - - [InstallFromSource](InstallFromSource) - Additional tips on source installs. |
51 |
| - - Windows user? [Install and configure Go, Git, and Visual Studio Code for Windows](https://github.com/abourget/getting-started-with-golang) |
52 |
| - - Mac user? [How I start - Go](https://howistart.org/posts/go/1) - A step-by-step guide to installing Go and building your first web service. |
53 |
| - - Having installation problems? [InstallTroubleShooting](InstallTroubleShooting) |
54 |
| - - Make sure you have your [$GOPATH environment variable set correctly](https://go.dev/doc/install/source#gopath) |
55 |
| - - If you need additional tips on using [$GOPATH, go here](GOPATH). |
56 |
| - - [MultipleGoRoots](MultipleGoRoots) - More advanced information on working with multiple go installations and the `$GOROOT` variable. |
57 |
| -- [Go IDEs and Editors](IDEsAndTextEditorPlugins) - Information on how to use your favorite editor with Go. |
58 |
| -- [Tools for working with Go code](CodeTools) - Formatting, linting, vetting, refactoring, navigation, and visualization. |
59 |
| -- Finding Go Libraries and Packages |
60 |
| - - Start here: [Go open source projects](Projects). |
61 |
| - - Search for Go packages: [pkg.go.dev](http://pkg.go.dev) |
62 |
| - - Visualization of the [Go open-source package graph](https://anvaka.github.io/pm/#/galaxy/gosearch?l=1) |
63 |
| -- [Modules](Modules) - documentation on the dependency management system built into the Go command, added in 1.11. |
64 |
| -- [Managing your dependencies](PackageManagementTools) - An overview of the tools you can use to manage third-party packages (vendoring). |
65 |
| -- Publishing Go Packages as Open Source |
66 |
| - - Getting ready to publish your package? [Start here.](PackagePublishing) |
67 |
| - - [The Go Checklist](https://github.com/matttproud/gochecklist) - A comprehensive guide for publishing a project. |
68 |
| - - [How to layout your GitHub repo](GitHubCodeLayout) to make it easy for other Go programmers to use with the `go get` command. |
69 |
| - - [Go Package, Go](https://johnsto.co.uk/blog/go-package-go) - A few recommendations for making Go packages easy to use. |
70 |
| - |
71 |
| -## Learning more about Go |
72 |
| - |
73 |
| -Once you have an overview of the language, here are resources you can use to learn more. |
74 |
| - |
75 |
| -- [Learning Go](Learn) - A collection of resources for learning Go - beginner to advanced. |
76 |
| - - [Best Practices for a New Go Developer](https://www.cloudbees.com/blog/best-practices-for-a-new-go-developer) - Insights from Go community members. |
77 |
| - - [Server programming](LearnServerProgramming) - Building web, mobile, and API servers. |
78 |
| - - [More on concurrency](LearnConcurrency) |
79 |
| - - [More on error handling](LearnErrorHandling) |
80 |
| - - [More on testing](LearnTesting) |
81 |
| - - [More on mobile - Android and iOS](Mobile) |
82 |
| -- [Books](Books) - A list of Go books that have been published (ebook, paper). |
83 |
| -- [Blogs](Blogs) - Blogs about Go. |
84 |
| - - [Podcasts](Podcasts) - Podcasts and episodes featuring Go. |
85 |
| -- Videos, Talks, and Presentations |
86 |
| - - [GopherVids](http://gophervids.appspot.com/) (currently unreachable) is a searchable index of videos about Go. |
87 |
| - - [GoTalks](GoTalks) - A collection of talks from Go conferences and meetups. |
88 |
| - - [Livestreams](Livestreams) - live interactive Go project streams with members of the community. |
89 |
| - - [Screencasts](Screencasts) |
90 |
| -- [Articles](Articles) - A collection of articles to help you learn more about Go. |
91 |
| -- [Training](Training) - Free and commercial, online, and classroom training for Go. |
92 |
| -- [University Courses](Courses) - A list of CS programs and classes using Go. |
93 |
| -- [Resources for non-English speakers](NonEnglish) |
94 |
| - |
95 |
| -## The Go Community |
96 |
| - |
97 |
| -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](https://medium.com/@dgryski/the-go-community-f0d00e3a19e) or watch [Andrew Gerrand's closing keynote from GopherCon 2015](https://www.youtube.com/watch?v=0ht89TxZZnk). |
98 |
| - |
99 |
| -- Where Gophers hangout online: |
100 |
| - - [The Go Forum](https://forum.golangbridge.org/) - An all-purpose discussion forum for the Go community. |
101 |
| - - [Gophers Slack Channel](http://gophers.slack.com/) - For real-time chat ([request membership](http://blog.gopheracademy.com/gophers-slack-community/)). |
102 |
| - - [Golang News](http://golangnews.com) - For curated links about Go Programming. |
103 |
| - - There is also a [/r/golang](http://reddit.com/r/golang) sub-reddit. |
104 |
| - - On Twitter, follow the [@golang](https://twitter.com/golang) account and keep tabs on the [#golang](https://twitter.com/search?q=%23golang&src=typd) hashtag. |
105 |
| - - We've also got a landing page on [Stack Overflow](http://stackoverflow.com/tags/go) for Go Q&A. |
106 |
| - - Matrix enthusiasts are invited to join [#Go:matrix.org](https://riot.im/app/#/room/#Go:matrix.org). |
107 |
| - - Discord users are welcome at the [Discord Gophers](https://discord.gg/golang) server. |
108 |
| - - Hashnode users talk and write about Go in [Hashnode Go community](https://hashnode.com/n/go). |
109 |
| -- Mailing Lists |
110 |
| - - The mailing list for Go users is [golang-nuts](https://groups.google.com/forum/#!forum/golang-nuts) - very high traffic. |
111 |
| - - Before you post, [check to see if it's already been answered](http://stackoverflow.com/tags/go), then read [these tips on how to ask a good question](HowToAsk) |
112 |
| - - For discussions about the core Go open source project, join [golang-dev](https://groups.google.com/forum/#!forum/golang-dev). |
113 |
| - - To get just our release announcements, join [golang-announce](https://groups.google.com/forum/#!forum/golang-announce) |
114 |
| -- User Groups & Meetups - There are [Go Meetups in many cities](http://www.meetup.com/find/?allMeetups=false&keywords=golang&radius=Infinity&userFreeform=Sunnyvale%2C+CA&mcId=z94086&mcName=Sunnyvale%2C+CA&sort=recommended&eventFilter=mysugg) |
115 |
| - - [GoBridge](http://golangbridge.org) - Volunteers helping underrepresented communities to teach technical skills and to foster diversity in Go. |
116 |
| - - [Women Who Go](http://www.womenwhogo.org/) |
117 |
| - - See here for [additional information GoUserGroups](GoUserGroups) |
118 |
| - - [GoDiscourse](https://github.com/godiscourse/godiscourse) - Go Discourse is an open-source Go-based forum from `hello world`. |
119 |
| -- [Conferences](Conferences) - A list of upcoming and past Go conferences and major events. |
120 |
| -- [Companies using Go](GoUsers) - A comprehensive list of companies using Go throughout the world. |
121 |
| -- Learn more about the [Go Gopher images](Gopher) by Renee French. |
122 |
| - |
123 |
| -## Using the Go Toolchain |
124 |
| - |
125 |
| -- Start with the standard documentation for the `go` command [available here](https://pkg.go.dev/cmd/go/) |
126 |
| -- Start here to learn about [vendoring](https://pkg.go.dev/cmd/go/#hdr-Vendor_Directories). |
127 |
| -- See also [PackageManagementTools](PackageManagementTools) for package management tools. |
128 |
| -- [Cross Compilation](https://rakyll.org/cross-compilation/) |
129 |
| -- Shared libraries and Go (buildmode) |
130 |
| - - [Go Shared Libraries](https://github.com/jbuberel/buildmodeshared) - Examples for creating and using shared libraries from Go and Python. |
131 |
| - - [Sharing Go Packages with C](http://blog.ralch.com/tutorial/golang-sharing-libraries/) - by [@ralch](https://twitter.com/ralch). |
132 |
| - - [Calling Go libraries from Python](https://blog.filippo.io/building-python-modules-with-go-1-5/) - by Filippo Valsorda |
133 |
| - - [Calling Go libraries from Ruby](http://c7.se/go-and-ruby-ffi/) - by Peter Hellberg |
134 |
| - - [Calling Go libraries from Swift](https://rakyll.org/swift/) - by Jaana Burcu Dogan |
135 |
| - - [Build a Ruby Gem with a Go native extension](http://blog.paracode.com/2015/08/28/ruby-and-go-sitting-in-a-tree) - by @jondot |
136 |
| - - [gohttplib](https://github.com/shazow/gohttplib) - An experiment in using Go 1.5 buildmode=c-shared. |
137 |
| -- See the wikis below for additional details: |
138 |
| - - [GoGetTools](GoGetTools) |
139 |
| - - [GoGetProxyConfig](GoGetProxyConfig) |
140 |
| - - [cgo](cgo) |
141 |
| - - [CompilerOptimizations](CompilerOptimizations) |
142 |
| - - [GccgoCrossCompilation](GccgoCrossCompilation) |
143 |
| - - [GcToolchainTricks](GcToolchainTricks) |
144 |
| - - [GoGenerateTools](GoGenerateTools) |
145 |
| - - [Go Tooling Essentials](https://rakyll.org/go-tool-flags/) - by Jaana Burcu Dogan |
146 |
| - |
147 |
| -## Additional Go Programming Wikis |
148 |
| - |
149 |
| -- Concurrency |
150 |
| - - [Timeouts](Timeouts) - Abandon async calls that take too long |
151 |
| - - [LockOSThread](LockOSThread) |
152 |
| - - [MutexOrChannel](MutexOrChannel) - When to use one vs the other |
153 |
| - - [RaceDetector](RaceDetector) - How to detect and fix race conditions |
154 |
| -- Working with Databases |
155 |
| - - [database/sql](http://go-database-sql.org/) - Online tutorial for working with the database/sql package. |
156 |
| - - [SQLDrivers](SQLDrivers) |
157 |
| - - [SQLInterface](SQLInterface) |
158 |
| -- From other languages |
159 |
| - - [Go for Java Programmers](http://yourbasic.org/golang/go-java-tutorial/) |
160 |
| - - [Go for C++ Programmers](GoForCPPProgrammers) |
161 |
| -- Strings |
162 |
| - - [GoStrings](GoStrings) |
163 |
| - - [String Matching](http://blog.gopheracademy.com/advent-2014/string-matching/) |
164 |
| -- [Comments](Comments) |
165 |
| -- [CommonMistakes](CommonMistakes) |
166 |
| -- [Errors](Errors) |
167 |
| -- [GcToolchainTricks](GcToolchainTricks) |
168 |
| -- [InterfaceSlice](InterfaceSlice) |
169 |
| -- [Iota](Iota) |
170 |
| -- [MethodSets](MethodSets) |
171 |
| -- [PanicAndRecover](PanicAndRecover) |
172 |
| -- [Range](Range) |
173 |
| -- [RateLimiting](RateLimiting) |
174 |
| -- [SignalHandling](SignalHandling) |
175 |
| -- [SimultaneousAssignment](SimultaneousAssignment) |
176 |
| -- [SliceTricks](SliceTricks) |
177 |
| -- [Switch](Switch) |
178 |
| -- [TableDrivenTests](TableDrivenTests) |
179 |
| - |
180 |
| -## Online Services that work with Go |
181 |
| - |
182 |
| -If you're looking for services that support Go, here's a list to get you started. |
183 |
| - |
184 |
| -- Cloud Computing - Go is well supported by most cloud service providers. |
185 |
| - - [Amazon Web Services](https://github.com/aws/aws-sdk-go) |
186 |
| - - [Azure](https://github.com/Azure/azure-sdk-for-go) |
187 |
| - - [DigitalOcean](https://github.com/digitalocean/godo) |
188 |
| - - [GE Predix](https://github.com/geaviation/goboot-starter) |
189 |
| - - [Google Cloud Platform for Go](https://cloud.google.com/go) |
190 |
| - - [Heroku](https://github.com/heroku/heroku-buildpack-go) |
191 |
| - - [IBM Bluemix](https://developer.ibm.com/bluemix/2015/10/28/getting-started-with-golang-on-bluemix/) |
192 |
| - - [OpenStack](https://github.com/openstack/golang-client) |
193 |
| - - [Vscale](https://github.com/vscale/go-vscale) |
194 |
| - - [Aliyun](https://github.com/aliyun/alibaba-cloud-sdk-go) |
195 |
| - - [Tencent](https://github.com/TencentCloud/tencentcloud-sdk-go) |
196 |
| - - See here for [information on additional providers](ProviderIntegration) |
197 |
| -- [Continuous Integration and Continuous Deployment](HostedContinuousIntegration) - Go is well supported by most CI/CD frameworks |
198 |
| -- Monitoring/Logging |
199 |
| - - [OpsDash](https://www.opsdash.com/) - Go-based cluster monitoring platform. |
200 |
| -- Package and Dependency Management |
201 |
| - - [Gopkg.in](http://labix.org/gopkg.in) is a source for stable Go libraries, provided by Gustavo Niemeyer. |
202 |
| - |
203 |
| -## Troubleshooting Go Programs in Production |
204 |
| - |
205 |
| -- Understand the performance of your Go apps using the [pprof package](https://go.dev/blog/profiling-go-programs) |
206 |
| -- Heap Dumps |
207 |
| - - [heapdump13](heapdump13) |
208 |
| - - [heapdump14](heapdump14) |
209 |
| - - [heapdump15-through-heapdump17](heapdump15-through-heapdump17) |
210 |
| - |
211 |
| -## Contributing to the Go Project |
212 |
| - |
213 |
| -- Start by reading the [Go Contribution Guidelines](https://go.dev/doc/contribute) |
214 |
| -- If you'd like to propose a change to the Go project, start by reading the [Go Change Proposal Process](https://github.com/golang/proposal) |
215 |
| - - An archive of [design documents is also available](DesignDocuments) |
216 |
| -- Go releases happen at ~6-month intervals. [See here for more information](Go-Release-Cycle) |
217 |
| -- Want to know more about how the [Go source X-repositories are structured?](X-Repositories) |
218 |
| -- The Go project requires that all code be reviewed before it is submitted. |
219 |
| - - Read more about our [code review practices](CodeReview) |
220 |
| - - If you're commenting on code under review, please read [these guidelines](CodeReviewComments) |
221 |
| -- Issues |
222 |
| - - Bug reports and feature requests should be filed using the [GitHub issue tracker](https://github.com/golang/go/issues) |
223 |
| - - Want to understand how we [handle issues that are reported?](HandlingIssues) |
224 |
| -- Project Dashboards |
225 |
| - - [Go Builds Dashboard info](DashboardBuilders) |
226 |
| - - [Performance Dashboard info](PerfDashboard) |
227 |
| - - [Download failed logs and debugging](/wiki/Download-build-farm-failed-logs-and-debugging) |
228 |
| - |
229 |
| -## Platform Specific Information |
230 |
| - |
231 |
| -See [MinimumRequirements](MinimumRequirements) for minimum platform requirements of current Go ports. Considering porting Go to a new platform? [Read our porting policy first](PortingPolicy). |
232 |
| - |
233 |
| -- [ChromeOS](ChromeOS) |
234 |
| -- [Darwin](Darwin) |
235 |
| -- [DragonFly BSD](DragonFly-BSD) |
236 |
| -- [FreeBSD](FreeBSD) |
237 |
| -- [Go on ARM](GoArm) |
238 |
| -- [Linux](Linux) |
239 |
| - - [Ubuntu](Ubuntu) |
240 |
| -- [Mobile](Mobile) |
241 |
| -- [NetBSD](NetBSD) |
242 |
| -- [OpenBSD](OpenBSD) |
243 |
| -- [Plan 9](Plan9) |
244 |
| -- [Solaris](Solaris) |
245 |
| -- [Windows](Windows) |
246 |
| - - [WindowsBuild](WindowsBuild) |
247 |
| - - [WindowsCrossCompiling](WindowsCrossCompiling) |
248 |
| - - [WindowsDLLs](WindowsDLLs) |
249 |
| - |
250 |
| -Notes: |
251 |
| - |
252 |
| -- Please refrain from changing the title of the wiki pages, as some of them might be linked to from [golang.org](https://golang.org) or other websites |
0 commit comments