The Go programming language is an open source project to make programmers more productive.
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.
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 take the tour online or install it locally.
The first tutorial. An introductory text that touches upon several core concepts: syntax, types, allocation, constants, I/O, sorting, printing, goroutines, and channels.
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.
How to write a new package and how to test code.
Answers to common questions about Go.
Guided tours of Go programs.
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 Go runtime for App Engine. See the presentation slides.
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 presentation slides.
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.
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 presentation slides.
An hour-long talk delivered by Rob Pike at Google in October 2009. The language's first public introduction. (See the slides in PDF format.) The language has changed since it was made, but it's still a good introduction.
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.
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 presentation slides.
This talk was also delivered at Sydney University in September 2010. A video of the lecture is available here.
Rob Pike's Emerging Languages Conference presentation delivered in July 2010. See the presentation slides. Abstract:
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.
A description of the Go language frontend for gcc. Ian Lance Taylor's paper delivered at the GCC Summit 2010.
A short promotional video featuring Russ Cox demonstrating Go's fast compiler.
The golang-nuts mailing list is for general Go discussion.
A list of the most popular goinstall'd Go libraries.
A list of external Go projects including programs and libraries.
#go-nuts on irc.freenode.net is the official Go IRC channel.
The Go project's official Twitter account.