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 press `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.

When you click on [[javascript:highlightAndClick("#format")][Format]]
(shortcut: `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://tour.go-zh.org/][Simplified Chinese — 中文（简体）]]
- [[https://go-tour-cz.appspot.com/][Czech — Česky]]
- [[https://go-tour-fr.appspot.com/][French — Français]]
- [[https://go-tour-id2.appspot.com/][Indonesian — Bahasa Indonesia]]
- [[https://go-tour-jp.appspot.com/][Japanese — 日本語]]
- [[https://go-tour-ko.appspot.com/][Korean — 한국어]]
- [[https://go-tour-pl1.appspot.com/][Polish — Polski]]
- [[https://go-tour-th.appspot.com/][Thai — ภาษาไทย]]
- [[https://go-tour-uz.appspot.com/][Uzbek — Ўзбекча]]

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

#appengine: * Go offline (optional)
#appengine:
#appengine: This tour is also available as a stand-alone program that you can use
#appengine: without access to the internet. It builds and runs the code samples on
#appengine: your own machine.
#appengine:
#appengine: To run the tour locally, you'll need to first
#appengine: [[https://golang.org/doc/install][install Go]] and then run:
#appengine:
#appengine:   go install golang.org/x/website/tour@latest
#appengine:
#appengine: This will place a `tour` binary in your
#appengine: [[https://golang.org/cmd/go/#hdr-GOPATH_and_Modules][GOPATH]]'s `bin` directory.
#appengine: When you run the tour program, it will open a web browser displaying
#appengine: your local version of the tour.
#appengine:
#appengine: 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]].
