2010-05-27 17:47:42 -06:00
<!-- title Go Resources -->
<!-- subtitle Go documents and learning materials -->
< h2 id = "about" > Recommendations< / h2 >
< p >
If you're new to Go, we recommend following the
< a href = "go_tutorial.html" > tutorial< / a > while consulting the
< a href = "go_spec.html" > language spec< / a > .
Then read < a href = "effective_go.html" > Effective Go< / a > , as it addresses many
common beginner questions.
< / p >
< h2 id = "reference" > Reference Materials< / h2 >
< p > Keep these under your pillow.< / p >
< h3 id = "pkg" > < a href = "/pkg/" > Package Documentation< / a > < / h3 >
< p >
The built-in documentation for the Go standard library.
< / p >
< h3 id = "pkg" > < a href = "/cmd/" > Command Documentation< / a > < / h3 >
< p >
The built-in documentation for the Go tools.
< / p >
< h3 id = "spec" > < a href = "go_spec.html" > Language Specification< / a > < / h3 >
< p >
The official Go Language specification.
< / p >
< h3 id = "go_mem" > < a href = "go_mem.html" > The Go Memory Model< / a > < / h3 >
< p >
A document that specifies the conditions under which reads of a variable in
one goroutine can be guaranteed to observe values produced by writes to the
same variable in a different goroutine.
< / p >
< h2 id = "tutorials" > Tutorials< / h2 >
< h3 id = "orig_tutorial" > < a href = "go_tutorial.html" > A Tutorial for the Go Programming Language< / a > < / h3 >
< p >
The first tutorial. An introductory text that touches upon several core
concepts: syntax, types, allocation, constants, I/O, sorting, printing,
goroutines, and channels.
< / p >
< h3 id = "effective_go" > < a href = "effective_go.html" > Effective Go< / a > < / h3 >
< p >
A document that gives tips for writing clear, idiomatic Go code.
A must read for any new Go programmer. It augments the tutorial and
the language spec, both of which should be read first.
< / p >
< h3 id = "codelab_wiki" > < a href = "codelab/wiki/" > Codelab: Writing Web Applications< / a > < / h3 >
< p >
This codelab takes the reader through the creation of a simple wiki web
application. It touches on structs, methods, file I/O, http, regular expressions,
and closures.
< / p >
< h3 id = "go_for_cpp_programmers" > < a href = "go_for_cpp_programmers.html" > Go for C++ Programmers< / a > < / h3 >
< p >
An introduction to Go for C++ programmers.
< / p >
< h3 id = "code" > < a href = "code.html" > How to write Go code< / a > < / h3 >
< p >
How to write a new package and how to test code.
< / p >
2010-07-01 21:32:02 -06:00
< h2 id = "tutorials_nonenglish" > Tutorials in languages other than English< / h2 >
< h3 id = "tutorial_de" > < a href = "http://bitloeffel.de/DOC/golang/go_tutorial_20100613_de.html" > Eine Anleitung zum Programmieren in Go< / a > < / h3 >
< p >
A German translation of the Go Tutorial.
< / p >
2010-05-27 17:47:42 -06:00
< h2 id = "faqs" > Frequently Asked Questions< / h2 >
< h3 id = "go_faq" > < a href = "go_faq.html" > Go FAQ< / a > < / h3 >
< p >
Answers to common questions about Go.
< / p >
< h3 id = "go_lang_faq" > < a href = "go_lang_faq.html" > Language Design FAQ< / a > < / h3 >
< p >
Answers to common questions about the design decisions behind Go.
< / p >
< h3 id = "go_programming_faq" > < a href = "go_programming_faq.html" > Programming FAQ< / a > < / h3 >
< p >
Answers to common questions about programming with Go.
< / p >
2010-07-01 21:32:02 -06:00
< h2 id = "dev" > Development< / h2 >
2010-05-27 17:47:42 -06:00
< h3 id = "contibute" > < a href = "contribute.html" > Contributing to the Go project< / a > < / h3 >
< p >
How to contribute changes to the Go project.
< / p >
< h3 id = "roadmap" > < a href = "devel/roadmap.html" > Roadmap< / a > < / h3 >
< p >
Features and ideas being developed or discussed by the Go team.
< / p >
< h3 id = "release" > < a href = "devel/release.html" > Release History< / a > < / h3 >
< p >
A summarization of the changes between tagged releases of Go.
< / p >
2010-07-29 18:36:13 -06:00
< h2 id = "videos_talks" > Videos and Talks< / h2 >
< h3 id = "go_programming" > < a href = "http://www.youtube.com/watch?v=jgVhBThJdXc" > Go Programming< / a > < / h3 >
< p >
A presentation delivered by Rob Pike and Russ Cox at Google I/O 2010. It
illustrates how programming in Go differs from other languages through a set of
examples demonstrating features particular to Go. These include concurrency,
embedded types, methods on any type, and program construction using interfaces.
< / p >
2010-05-27 17:47:42 -06:00
< h3 id = "techtalk" > < a href = "http://www.youtube.com/watch?v=rKnDgT73v8s" > The Go Tech Talk< / a > < / h3 >
< p >
An hour-long talk delivered by Rob Pike at Google in October 2009.
The language's first public introduction. (See the < a href = "talks/go_talk-20091030.pdf" > slides in PDF format< / a > .) The language has changed since it was made,
but it's still a good introduction.
< / p >
< h3 id = "gocoding_channel" > < a href = "http://www.youtube.com/gocoding" > gocoding YouTube Channel< / a > < / h3 >
< p >
A YouTube channel that includes screencasts and other Go-related videos:
< / p >
< ul >
< li > < a href = "http://www.youtube.com/gocoding#p/u/0/jDWBJOXs_iI" > Screencast: Writing Go Packages< / a > - writing, building, and distributing Go packages.< / li >
2010-07-29 18:36:13 -06:00
< li > < a href = "http://www.youtube.com/watch?v=3brH0zOqm0w" > Screencast: Testing Go Packages< / a > - writing unit tests and benchmarking Go packages.< / li >
2010-05-27 17:47:42 -06:00
< / ul >
2010-07-29 18:36:13 -06:00
< h3 id = "oscon_go" > < a href = "http://www.oscon.com/oscon2010/public/schedule/detail/14760" > Another Go at Language Design< / a > < / h3 >
< p >
A tour, with some background, of the major features of Go, intended for
an audience new to the language. The talk was presented at OSCON 2010.
See the < a href = "http://assets.en.oreilly.com/1/event/45/Another%20Go%20at%20Language%20Design%20Presentation.pdf" > presentation slides< / a > .
< / p >
< h3 id = "oscon_go" > < a href = "http://www.oscon.com/oscon2010/public/schedule/detail/15464" > Go Emerging Languages Conference Talk< / a > < / h3 >
< p >
Rob Pike's Emerging Languages Conference presentation delivered in July 2010. See the < a href = "http://assets.en.oreilly.com/1/event/45/Go%20Presentation.pdf" > presentation slides< / a > . Abstract:
< / p >
< p > < i >
Go’ s approach to concurrency differs from that of many languages, even those
(such as Erlang) that make concurrency central, yet it has deep roots. The path
from Hoare’ s 1978 paper to Go provides insight into how and why Go works as it
does.
< / i > < / p >
2010-05-27 17:47:42 -06:00
< h3 id = "promo_video" > < a href = "http://www.youtube.com/watch?v=wwoWei-GAPo" > The Go Promo Video< / a > < / h3 >
< p >
A short promotional video featuring Russ Cox demonstrating Go's fast compiler.
< / p >
2010-07-01 21:32:02 -06:00
< h2 id = "codewalks" > Codewalks< / h2 >
< h3 id = "codewalk_sharemem" > < a href = "codewalk/sharemem/" > Share Memory By Communicating< / a > < / h3 >
< p >
A demonstration of the practical use of goroutines and channels.
< / p >
< h3 id = "codewalk_codewalk" > < a href = "codewalk/codewalk/" > How to write a Codewalk< / a > < / h3 >
< p >
A self-describing Codewalk.
< / p >
2010-05-27 17:47:42 -06:00
< h2 id = "blogs" > Blog Posts< / h2 >
< p >
Articles about Go from external blogs.
< / p >
< h3 id = "blog_rsc" > < a href = "http://research.swtch.com/search/label/Go" > Go articles at research!rsc< / a > < / h3 >
< p >
Posts labelled 'Go' by Russ Cox, one of the core Go developers.
< / p >
< h3 id = "blog_iant" > < a href = "http://www.airs.com/blog/archives/category/programming" > Programming articles at Airs< / a > < / h3 >
< p >
Posts labelled 'Programming' by Ian Lance Taylor, one of the core Go developers.
< / p >