| <!-- title Documentation --> | |
| <div class="left-column"> | |
| <h2 id="learning">Learning Go</h2> | |
| <p> | |
| If you're new to Go, we recommend you work through the | |
| <a href="go_tutorial.html">tutorial</a>. The | |
| <a href="go_spec.html">language specification</a> has all the details should | |
| you want to explore. | |
| </p> | |
| <p> | |
| Once you've learned a little about the language, | |
| <a href="effective_go.html">Effective Go</a> will help you learn the style and | |
| idioms of programming in Go. | |
| </p> | |
| <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="course_notes">Course Notes</h3> | |
| <p> | |
| Slides from a 3-day course about the Go programming language. | |
| A more thorough introduction than the tutorial. | |
| </p> | |
| <ul> | |
| <li><a href="GoCourseDay1.pdf">Day 1: Basics</a> <small>[270KB PDF]</small> | |
| <li><a href="GoCourseDay2.pdf">Day 2: Types, Methods, Interfaces</a> <small>[270KB PDF]</small> | |
| <li><a href="GoCourseDay3.pdf">Day 3: Concurrency and Communication</a> <small>[180KB PDF]</small> | |
| </ul> | |
| <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 specification, both of which should be read first. | |
| </p> | |
| <h3 id="go_faq"><a href="go_faq.html">Frequently Asked Questions (FAQ)</a></h3> | |
| <p> | |
| Answers to common questions about Go. | |
| </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> | |
| <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="codewalks"><a href="codewalk/">Codewalks</a></h3> | |
| <p> | |
| Guided tours of Go programs. | |
| </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> | |
| <h2 id="tutorials_nonenglish">Non-English Documentation</h2> | |
| <h3 id="docs_be">Belarusian — Беларуская</h3> | |
| <ul> | |
| <li><a href="http://www.designcontest.com/show/faq-be">faq-be</a> - Frequently Asked Questions.</li> | |
| </ul> | |
| <h3 id="docs_cn">Chinese — 中文</h3> | |
| <ul> | |
| <li><a href="http://code.google.com/p/golang-china/">golang-china</a> - a broad range of Go documentation.</li> | |
| <li><a href="http://code.google.com/p/ac-me/downloads/detail?name=fango.pdf">Effective Go and Tutorial</a></li> | |
| </ul> | |
| <h3 id="docs_de">German — Deutsch</h3> | |
| <ul> | |
| <li><a href="http://bitloeffel.de/DOC/golang/go_tutorial_de.html">Eine Anleitung zum Programmieren in Go</a> - the Go Tutorial.</li> | |
| <li><a href="http://bitloeffel.de/DOC/golang/effective_go_de.html">Wirkungsvoll Go programmieren</a> - Effective Go.</li> | |
| <li><a href="http://bitloeffel.de/DOC/golang/code_de.html">Wie man Go-Kode schreibt</a> - How to Write Go Code.</li> | |
| </ul> | |
| <h3 id="docs_jp">Japanese — 日本語</h3> | |
| <ul> | |
| <li><a href="http://golang.jp/">golang.jp</a> - Go documentation and news. | |
| </ul> | |
| <h3 id="docs_kr">Korean — 한국어</h3> | |
| <ul> | |
| <li><a href="http://code.google.com/p/golang-korea">golang-korea</a> - Go documentation and news. | |
| </ul> | |
| <h3 id="docs_ru">Russian — Русский</h3> | |
| <ul> | |
| <li><a href="http://golanguage.ru/">golanguage.ru</a> - Go documentation. | |
| </ul> | |
| </div> | |
| <div class="right-column"> | |
| <h2 id="References">References</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="cmd"><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="release"><a href="devel/release.html">Release History</a></h3> | |
| <p>A summary of the changes between Go releases.</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="videos_talks">Videos and Talks</h2> | |
| <h3 id="writing_web_apps"><a href="http://www.youtube.com/watch?v=-i0hat7pdpk">Writing Web Apps in Go</a></h3> | |
| <p> | |
| A talk by Rob Pike and Andrew Gerrand presented at Google I/O 2011. | |
| It walks through the construction and deployment of a simple web application | |
| and unveils the <a href="http://blog.golang.org/2011/05/go-and-google-app-engine.html">Go runtime for App Engine</a>. | |
| See the <a href="/doc/talks/io2011/Writing_Web_Apps_in_Go.pdf">presentation slides</a>. | |
| </p> | |
| <h3 id="real_world_go"><a href="http://www.youtube.com/watch?v=7QDVRowyUQA">Real World Go</a></h3> | |
| <p> | |
| A talk by Andrew Gerrand presented at Google I/O Bootcamp 2011. | |
| It gives a broad overview of Go's type system and concurrency model | |
| and provides four examples of Go programs that solve real problems. | |
| See the <a href="/doc/talks/io2011/Real_World_Go.pdf">presentation slides</a>. | |
| </p> | |
| <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> | |
| <h3 id="practical_go_programming"><a href="http://osdc.blip.tv/file/4432146/">Practical Go Programming</a></h3> | |
| <p> | |
| This talk presents the development of a complete web application in Go. | |
| It looks at design, storage, concurrency, and scaling issues in detail, using | |
| the simple example of an URL shortening service. | |
| See the <a href="http://wh3rd.net/practical-go/">presentation slides</a>. | |
| </p> | |
| <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> | |
| <li><a href="http://www.youtube.com/watch?v=3brH0zOqm0w">Screencast: Testing Go Packages</a> - writing unit tests and benchmarking Go packages.</li> | |
| </ul> | |
| <h3 id="jaoo_go"><a href="/doc/ExpressivenessOfGo.pdf">The Expressiveness Of Go</a></h3> | |
| <p> | |
| A discussion of the qualities that make Go an expressive and comprehensible | |
| language. The talk was presented by Rob Pike at JAOO 2010. | |
| The recording of the event was lost due to a hardware error. | |
| </p> | |
| <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> | |
| <p> | |
| This talk was also delivered at Sydney University in September 2010. A video | |
| of the lecture is available | |
| <a href="http://sydney.edu.au/engineering/it/videos/seminar_pike">here</a>. | |
| </p> | |
| <h3 id="emerging_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> | |
| <h3 id="go_frontend_gcc"><a href="talks/gofrontend-gcc-summit-2010.pdf">The Go frontend for GCC</a></h3> | |
| <p> | |
| A description of the Go language frontend for gcc. | |
| Ian Lance Taylor's paper delivered at the GCC Summit 2010. | |
| </p> | |
| <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> | |
| </div> | |
| <div class="end-columns"></div> |