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

The Go Authors
https://golang.org

* Hello, 世界

Welcome to a tour of the [[https://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
[[https://golang.org/cmd/gofmt/][gofmt]] tool. You can switch syntax highlighting on and off
by clicking on the [[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:

- [[https://go-tour-br.appspot.com/][Brazilian Portuguese — Português do Brasil]]
- [[https://go-tour-ca.appspot.com/][Catalan — Català]]
- [[https://go-tour-de.appspot.com/][German — Deutsch]]
- [[https://go-tour-es.appspot.com/][Spanish — Español]]
- [[https://go-tour-fr.appspot.com/][French — Français]]
- [[https://go-tour-id2.appspot.com/][Indonesian — Bahasa Indonesia]]
- [[https://go-tour-ita.appspot.com/][Italian — Italiano]]
- [[https://go-tour-he.appspot.com/][Hebrew — עִבְרִית]]
- [[https://go-tour-jp.appspot.com/][Japanese — 日本語]]
- [[https://go-tour-kr.appspot.com/][Korean — 한국어]]
- [[https://go-tour-ro.appspot.com/][Romanian — Română]]
- [[https://tour.go-zh.org/][Simplified Chinese — 中文（简体）]]
- [[https://go-tour-zh-tw.appspot.com/][Traditional Chinese — 中文（繁體）]]
- [[https://go-tour-ua.appspot.com/][Ukrainian — Українська]]
- [[https://go-tour-uz.appspot.com/][Uzbek — Ўзбекча]]
- [[https://go-tour-turkish.appspot.com/][Turkish - Türkçe]]
- [[https://go-tour-ru-ru.appspot.com/][Russian - Русский]]

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

#appengine: * Go offline
#appengine: 
#appengine: This tour is also available as a stand-alone program that you can use
#appengine: without access to the internet.
#appengine: 
#appengine: The stand-alone tour is faster, as it builds and runs the code samples
#appengine: on your own machine.
#appengine: 
#appengine: To run the tour locally first
#appengine: [[https://golang.org/dl/][download and install Go]]
#appengine: then start the tour from the command line:
#appengine: 
#appengine: 	go tool tour
#appengine: 
#appengine: Or, you can install and run this tour manually if you have any trouble
#appengine: running the above command:
#appengine: 
#appengine:   go get golang.org/x/tour/gotour
#appengine:   gotour
#appengine: 
#appengine: The tour program will open a web browser displaying
#appengine: your local version of the tour.
#appengine: 
#appengine: Or, of course, you can continue to take the tour through this web site.

#appengine: * The Go Playground
#appengine: 
#appengine: This tour is built atop the [[https://play.golang.org/][Go Playground]], a
#appengine: web service that runs on [[https://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 significance 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 "[[https://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]].
