mirror of
https://github.com/golang/go
synced 2024-11-24 21:10:04 -07:00
d84de09e1d
This is not the finished product, but a good checkpoint from which to proceed with further development. R=golang-dev, dsymonds, r CC=golang-dev https://golang.org/cl/5571061
259 lines
11 KiB
HTML
259 lines
11 KiB
HTML
<!--{
|
||
"Title": "Documentation",
|
||
"Path": "/doc/"
|
||
}-->
|
||
|
||
<p>
|
||
The Go programming language is an open source project to make programmers more
|
||
productive.
|
||
</p>
|
||
|
||
<p>
|
||
Go is expressive, concise, clean, and efficient. Its concurrency
|
||
mechanisms make it easy to write programs that get the most out of multicore
|
||
and networked machines, while its novel type system enables flexible and
|
||
modular program construction. Go compiles quickly to machine code yet has the
|
||
convenience of garbage collection and the power of run-time reflection. It's a
|
||
fast, statically typed, compiled language that feels like a dynamically typed,
|
||
interpreted language.
|
||
</p>
|
||
|
||
<div id="manual-nav"></div>
|
||
|
||
<h2 id="learning">Learning Go</h2>
|
||
|
||
<h3 id="go_tour"><a href="http://tour.golang.org/">A Tour of Go</a></h3>
|
||
<p>
|
||
An interactive introduction to Go in three sections.
|
||
The first section covers basic syntax and data structures; the second discusses
|
||
methods and interfaces; and the third introduces Go's concurrency primitives.
|
||
Each section concludes with a few exercises so you can practice what you've
|
||
learned. You can <a href="http://tour.golang.org/">take the tour online</a> or
|
||
<a href="http://code.google.com/p/go-tour/">install it locally</a>.
|
||
</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="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="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="go_faq"><a href="go_faq.html">Frequently Asked Questions (FAQ)</a></h3>
|
||
<p>
|
||
Answers to common questions about Go.
|
||
</p>
|
||
|
||
<h3>Other introductory articles</h3>
|
||
|
||
<ul>
|
||
<li><a href="codelab/wiki/">Writing Web Applications</a> -
|
||
building a simple web application.</li>
|
||
<li><a href="go_for_cpp_programmers.html">Go for C++ Programmers</a></li>
|
||
</ul>
|
||
|
||
<h2 id="articles">Go Articles</h2>
|
||
|
||
<h3>Codewalks</h3>
|
||
<p>
|
||
Guided tours of Go programs.
|
||
</p>
|
||
<ul>
|
||
<li><a href="/doc/codewalk/functions">First-Class Functions in Go</a></li>
|
||
<li><a href="/doc/codewalk/markov">Generating arbitrary text: a Markov chain algorithm</a></li>
|
||
<li><a href="/doc/codewalk/sharemem">Share Memory by Communicating</a></li>
|
||
</ul>
|
||
|
||
<h3>Language</h3>
|
||
|
||
<ul>
|
||
<li><a href="http://blog.golang.org/2010/04/json-rpc-tale-of-interfaces.html">JSON-RPC: a tale of interfaces</a></li>
|
||
<li><a href="http://blog.golang.org/2010/07/gos-declaration-syntax.html">Go's Declaration Syntax</a></li>
|
||
<li><a href="http://blog.golang.org/2010/08/defer-panic-and-recover.html">Defer, Panic, and Recover</a></li>
|
||
<li><a href="http://blog.golang.org/2010/09/go-concurrency-patterns-timing-out-and.html">Go Concurrency Patterns: Timing out, moving on</a></li>
|
||
<li><a href="http://blog.golang.org/2011/01/go-slices-usage-and-internals.html">Go Slices: usage and internals</a></li>
|
||
<li><a href="http://blog.golang.org/2011/05/gif-decoder-exercise-in-go-interfaces.html">A GIF decoder: an exercise in Go interfaces</a></li>
|
||
<li><a href="http://blog.golang.org/2011/07/error-handling-and-go.html">Error Handling and Go</a></li>
|
||
</ul>
|
||
|
||
<h3>Packages</h3>
|
||
|
||
<ul>
|
||
<li><a href="http://blog.golang.org/2011/01/json-and-go.html">JSON and Go</a> - using the <a href="/pkg/encoding/json/">json</a> package.</li>
|
||
<li><a href="http://blog.golang.org/2011/03/gobs-of-data.html">Gobs of data</a> - the design and use of the <a href="/pkg/encoding/gob/">gob</a> package.</li>
|
||
<li><a href="http://blog.golang.org/2011/09/laws-of-reflection.html">The Laws of Reflection</a> - the fundamentals of the <a href="/pkg/reflect/">reflect</a> package.</li>
|
||
<li><a href="http://blog.golang.org/2011/09/go-image-package.html">The Go image package</a> - the fundamentals of the <a href="/pkg/image/">image</a> package.</li>
|
||
<li><a href="http://blog.golang.org/2011/09/go-imagedraw-package.html">The Go image/draw package</a> - the fundamentals of the <a href="/pkg/image/draw/">image/draw</a> package.</li>
|
||
</ul>
|
||
|
||
<h3>Tools</h3>
|
||
|
||
<ul>
|
||
<li><a href="http://blog.golang.org/2011/03/c-go-cgo.html">C? Go? Cgo!</a> - linking against C code with <a href="/cmd/cgo/">cgo</a>.</li>
|
||
<li><a href="http://blog.golang.org/2011/03/godoc-documenting-go-code.html">Godoc: documenting Go code</a> - writing good documentation for <a href="/cmd/godoc/">godoc</a>.</li>
|
||
<li><a href="http://blog.golang.org/2011/06/profiling-go-programs.html">Profiling Go Programs</a></li>
|
||
</ul>
|
||
|
||
<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://www.youtube.com/watch?v=2-pPAvqyluI">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="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>
|
||
|
||
<h2 id="developer_info">The Go Community</h2>
|
||
|
||
<h3 id="mailinglist"><a href="http://groups.google.com/group/golang-nuts">Go Nuts Mailing List</a></h3>
|
||
<p>The <a href="http://groups.google.com/group/golang-nuts">golang-nuts</a>
|
||
mailing list is for general Go discussion.</p>
|
||
|
||
<h3 id=""><a href="http://godashboard.appspot.com/package">Go Packages Dashboard</a></h3>
|
||
<p>A list of the most popular <a href="/cmd/goinstall/">goinstall</a>'d
|
||
Go libraries.</p>
|
||
|
||
<h3 id=""><a href="http://godashboard.appspot.com/project">Go Project Dashboard</a></h3>
|
||
<p>A list of external Go projects including programs and libraries.</p>
|
||
|
||
<h3 id="irc"><a href="irc:irc.freenode.net/go-nuts">Go IRC Channel</a></h3>
|
||
<p><b>#go-nuts</b> on <b>irc.freenode.net</b> is the official Go IRC channel.</p>
|
||
|
||
<h3 id="twitter"><a href="http://twitter.com/go_nuts">@go_nuts at Twitter</a></h3>
|
||
<p>The Go project's official Twitter account.</p>
|
||
|
||
<h2 id="tutorials_nonenglish">Non-English Documentation</h2>
|
||
|
||
<h4 id="docs_be">Belarusian — Беларуская</h4>
|
||
|
||
<ul>
|
||
<li><a href="http://www.designcontest.com/show/faq-be">faq-be</a> - Frequently Asked Questions.</li>
|
||
</ul>
|
||
|
||
<h4 id="docs_cn">Chinese — 中文</h4>
|
||
|
||
<ul>
|
||
<li><a href="http://go-tour-zh.appspot.com/">A Tour of Go</a></li>
|
||
<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>
|
||
|
||
<h4 id="docs_cz">Czech — Čeština</h4>
|
||
|
||
<ul>
|
||
<li><a href="http://www.abclinuxu.cz/clanky/google-go-pravidla-reflexe">Pravidla reflexe</a> - a translation of <a href="http://blog.golang.org/2011/09/laws-of-reflection.html">The Laws of Reflection</a>.</li>
|
||
</ul>
|
||
|
||
<h4 id="docs_fr">French — Français</h4>
|
||
|
||
<ul>
|
||
<li>
|
||
<a href="http://code.google.com/p/golang-france/">golang-france</a> - Go documentation.
|
||
</ul>
|
||
|
||
<h4 id="docs_de">German — Deutsch</h4>
|
||
|
||
<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>
|
||
|
||
<h4 id="docs_jp">Japanese — 日本語</h4>
|
||
<ul>
|
||
<li><a href="http://go-tour-jp.appspot.com/">A Tour of Go</a></li>
|
||
<li><a href="http://golang.jp/">golang.jp</a> - Go documentation and news.</li>
|
||
</ul>
|
||
|
||
<h4 id="docs_kr">Korean — 한국어</h4>
|
||
<ul>
|
||
<li><a href="http://go-tour-kr.appspot.com">A Tour of Go</a></li>
|
||
<li><a href="http://code.google.com/p/golang-korea">golang-korea</a> - Go documentation and news.</li>
|
||
</ul>
|
||
|