## Recommendations

If you're new to Go, we recommend following the tutorial while consulting the language spec. Then read Effective Go, as it addresses many common beginner questions.

## Reference Materials

Keep these under your pillow.

### Package Documentation

The built-in documentation for the Go standard library.

### Command Documentation

The built-in documentation for the Go tools.

### Language Specification

The official Go Language specification.

### The Go Memory Model

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.

## Tutorials

### A Tutorial for the Go Programming Language

The first tutorial. An introductory text that touches upon several core concepts: syntax, types, allocation, constants, I/O, sorting, printing, goroutines, and channels.

### Effective Go

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.

### Codelab: Writing Web Applications

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.

### Go for C++ Programmers

An introduction to Go for C++ programmers.

### How to write Go code

How to write a new package and how to test code.

## Documentation in languages other than English

### Eine Anleitung zum Programmieren in Go

A German translation of the Go Tutorial.

### Wirkungsvoll Go programmieren

A German translation of the Effective Go document.

### Wie man Go-Kode schreibt

A German translation of the How to Write Go Code document.

## Frequently Asked Questions

### Go FAQ

Answers to common questions about Go.

### Language Design FAQ

Answers to common questions about the design decisions behind Go.

### Programming FAQ

Answers to common questions about programming with Go.

## Development

### Contributing to the Go project

How to contribute changes to the Go project.

### Roadmap

Features and ideas being developed or discussed by the Go team.

### Release History

A summarization of the changes between tagged releases of Go.

## Videos and Talks

### Go Programming

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.

### The Go Tech Talk

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.

### gocoding YouTube Channel

A YouTube channel that includes screencasts and other Go-related videos:

- Screencast: Writing Go Packages - writing, building, and distributing Go packages.
- Screencast: Testing Go Packages - writing unit tests and benchmarking Go packages.

### Another Go at Language Design

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.

### Go Emerging Languages Conference Talk

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.

### The Go Promo Video

A short promotional video featuring Russ Cox demonstrating Go's fast compiler.

## Codewalks

### Share Memory By Communicating

A demonstration of the practical use of goroutines and channels.

### How to write a Codewalk

A self-describing Codewalk.

## Blog Posts

Articles about Go from external blogs.

### Go articles at research!rsc

Posts labelled 'Go' by Russ Cox, one of the core Go developers.

### Programming articles at Airs

Posts labelled 'Programming' by Ian Lance Taylor, one of the core Go developers.