# Introducing the Go Playground
15 Sep 2010
Tags: playground
Summary: Announcing the Go Playground, https://play.golang.org/.

Andrew Gerrand

##

If you visit [golang.org](https://golang.org/) today you'll see our new look.
We have given the site a new coat of paint and reorganized its content to
make it easier to find.
These changes are also reflected in the web interface of [godoc](https://golang.org/cmd/godoc/),
the Go documentation tool.
But the real news is a prominent new feature: the [Go Playground](https://golang.org/).

.image introducing-go-playground_Untitled.png

The Playground allows anyone with a web browser to write Go code that we
immediately compile,
link, and run on our servers.
There are a few example programs to get you started (see the "Examples" drop-down).
We hope that this will give curious programmers an opportunity to try the
language before [installing it](https://golang.org/doc/install.html),
and experienced Go users a convenient place in which to experiment.
Beyond the front page, this functionality has the potential to make our
reference and tutorial materials more engaging.
We hope to extend its use in the near future.

Of course, there are some limitations to the kinds of programs you can run in the Playground.
We can't simply accept arbitrary code and run it on our servers without restrictions.
The programs build and run in a sandbox with a reduced standard library;
the only communication your program has to the outside world is via standard output,
and there are limits to CPU and memory use.
As such, consider this just a taste of the wonderful world of Go;
to have the full experience you'll need to [download it yourself](https://golang.org/doc/install.html).
If you've been meaning to try Go but never got around to it,
why not visit [golang.org](https://golang.org/) to try it right now?
