Welcome!
Learn how to use this tour: including how to navigate the different lessons and how to run code.

The Go Authors
http://golang.org

* Hello, 世界

Welcome to a tour of the [[http://golang.org/][Go programming language]].

The tour is divided into a list of modules that you can
access by clicking on
[[javascript:highlight(".logo")][A Tour of Go]] on the top left of the page.

You can also view the table of contents at any time by clicking on the [[javascript:highlightAndClick(".nav")][menu]] on the top right of the page.

Throughout the tour you will find a series of slides and exercises for you
to complete.

You can navigate through them using

- [[javascript:highlight(".prev-page")]["previous"]] or `PageUp` to go to the previous page,

- [[javascript:highlight(".next-page")]["next"]] or `PageDown` to go to the next page.

The tour is interactive. Click the
[[javascript:highlightAndClick("#run")][Run]] button now 
(or type `shift-enter`) to compile and run the program on
#appengine: a remote server.
your computer.
The result is displayed below the code.

These example programs demonstrate different aspects of Go. The programs in the tour are meant to be starting points for your own experimentation.

Edit the program and run it again.

Note that when you click on [[javascript:highlightAndClick("#format")][Format]] or `ctrl-enter`
the text in the editor is formatted using the
[[http://golang.org/cmd/gofmt/][gofmt]] tool. You can switch on and off syntax highlighting
the clicking on [[javascript:highlightAndClick(".syntax-checkbox")][syntax]] button.

When you're ready to move on, click the [[javascript:highlightAndClick(".next-page")][right arrow]] below or type the `PageDown` key.

.play welcome/hello.go

* Go local

The tour is available in other languages:

- [[http://go-tour-br.appspot.com/][Brazilian Portuguese — Português do Brasil]]
- [[http://go-tour-ca.appspot.com/][Catalan — Català]]
- [[http://go-tour-de.appspot.com/][German — Deutsch]]
- [[http://go-tour-es.appspot.com/][Spanish — Español]]
- [[http://go-tour-fr.appspot.com/][French — Français]]
- [[http://go-tour-ita.appspot.com/][Italian — Italiano]]
- [[http://go-tour-he.appspot.com/][Hebrew — עִבְרִית]]
- [[http://go-tour-jp.appspot.com/][Japanese — 日本語]]
- [[http://go-tour-kr.appspot.com/][Korean — 한국어]]
- [[http://go-tour-ro.appspot.com/][Romanian — Română]]
- [[http://tour.go-zh.org/][Simplified Chinese — 中文（简体）]]
- [[http://go-tour-zh-tw.appspot.com/][Traditional Chinese — 中文（繁體）]]

Click the [[javascript:highlightAndClick(".next-page")]["next"]] button or type `PageDown` to continue.

#appengine: * The Go Playground
#appengine: 
#appengine: This tour is built atop the [[http://play.golang.org/][Go Playground]], a
#appengine: web service that runs on [[http://golang.org/][golang.org]]'s servers.
#appengine: 
#appengine: The service receives a Go program, compiles, links, and runs the program inside
#appengine: a sandbox, then returns the output.
#appengine: 
#appengine: There are limitations to the programs that can be run in the playground: 
#appengine: 
#appengine: - In the playground the time begins at 2009-11-10 23:00:00 UTC (determining the sigificance of this date is an exercise for the reader). This makes it easier to cache programs by giving them deterministic output.
#appengine: 
#appengine: - There are also limits on execution time and on CPU and memory usage, and the program cannot access external network hosts. 
#appengine: 
#appengine: The playground uses the latest stable release of Go.
#appengine: 
#appengine: Read "[[http://blog.golang.org/playground][Inside the Go Playground]]" to learn more.
#appengine: 
#appengine: .play welcome/sandbox.go

* Congratulations

You've finished the first module of the tour!

Now click on [[javascript:highlightAndClick(".logo")][A Tour of Go]] to find out what else
you can learn about Go, or go directly to the [[javascript:click('.next-page')][next lesson]].
