| {{define "layout"}} |
| |
| {{$canShare := not googleCN}} |
| |
| <div class="PlayPage"> |
| <div class="Playground-controls"> |
| <h1 class="Playground-title">The Go Playground</h1> |
| <div class="Playground-buttons"> |
| {{if .playVersions -}} |
| <select class="Playground-selectGoVersion js-playgroundVersionEl" aria-label="Go version"> |
| {{range .playVersions -}} |
| <option value="{{.Backend}}">{{.Name}}</option> |
| {{end -}} |
| </select> |
| {{end -}} |
| <button id="run" class="Button Button--primary js-playgroundRunEl Playground-runButton" title="Run this code [shift-enter]">Run</button> |
| <div class="Playground-secondaryButtons"> |
| <button id="fmt" class="Button js-playgroundFmtEl" title="Format this code">Format</button> |
| {{- if $canShare}} |
| <button id="share" class="Button js-playgroundShareEl" title="Share this code">Share</button> |
| {{- end}} |
| </div> |
| <input type="text" class="Playground-shareURL js-playgroundShareURLEl" title="Sharing URL" style="display: none;"></input> |
| <select class="Playground-selectExample js-playgroundToysEl" aria-label="Code examples"> |
| <option value="hello.go">Hello, World!</option> |
| <option value="life.go">Conway's Game of Life</option> |
| <option value="fib.go">Fibonacci Closure</option> |
| <option value="peano.go">Peano Integers</option> |
| <option value="pi.go">Concurrent pi</option> |
| <option value="sieve.go">Concurrent Prime Sieve</option> |
| <option value="solitaire.go">Peg Solitaire Solver</option> |
| <option value="tree.go">Tree Comparison</option> |
| <option value="clear.go">Clear Screen</option> |
| <option value="http.go">HTTP Server</option> |
| <option value="image.go">Display Image</option> |
| <option value="multi.txt">Multiple Files</option> |
| <option value="sleep.go">Sleep</option> |
| <option value="test.go">Test Function</option> |
| <option value="index-dev.txt">Generic index</option> |
| </select> |
| </div> |
| </div> |
| <div class="Playground-inputContainer"> |
| <div id="wrap"> |
| <textarea id="code" name="code" class="Playground-input js-playgroundCodeEl" autocorrect="off" autocomplete="off" autocapitalize="off" spellcheck="false" aria-label="Try Go">{{if strings.Contains .URL "/play/p/"}}Loading share... |
| {{else}}// You can edit this code! |
| // Click here and start typing. |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| fmt.Println("Hello, 世界") |
| }{{end}}</textarea> |
| </div> |
| </div> |
| <div class="Playground-outputContainer js-playgroundOutputEl"> |
| <pre class="Playground-output"><noscript>Hello, 世界</noscript></pre> |
| </div> |
| |
| <div class="PlayAbout"> |
| <p><b>About the Playground</b></p> |
| |
| <p> |
| The Go Playground is a web service that runs on |
| <a href="/">go.dev</a>'s servers. |
| The service receives a Go program, <a href="/cmd/vet/">vets</a>, compiles, links, and |
| runs the program inside a sandbox, then returns the output. |
| </p> |
| |
| <p> |
| If the program contains <a href="/pkg/testing">tests or examples</a> |
| and no main function, the service runs the tests. |
| Benchmarks will likely not be supported since the program runs in a sandboxed |
| environment with limited resources. |
| </p> |
| |
| <p> |
| There are limitations to the programs that can be run in the playground: |
| </p> |
| |
| <ul> |
| |
| <li> |
| The playground can use most of the standard library, with some exceptions. |
| The only communication a playground program has to the outside world |
| is by writing to standard output and standard error. |
| </li> |
| |
| <li> |
| 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. |
| </li> |
| |
| <li> |
| There are also limits on execution time and on CPU and memory usage. |
| </li> |
| |
| </ul> |
| |
| <p> |
| The article "<a href="/blog/playground" target="_blank" rel="noopener">Inside |
| the Go Playground</a>" describes how the playground is implemented. |
| The source code is available at <a href="https://go.googlesource.com/playground" target="_blank" rel="noopener">https://go.googlesource.com/playground</a>. |
| </p> |
| |
| <p> |
| The playground uses the <a href="/play/p/Ztyu2FJaajl">latest stable release of Go</a>. |
| </p> |
| |
| <p> |
| The playground service is used by more than just the official Go project |
| (<a href="https://gobyexample.com/">Go by Example</a> is one other instance) |
| and we are happy for you to use it on your own site. |
| All we ask is that you |
| <a href="mailto:golang-dev@googlegroups.com">contact us first (note this is a public mailing list)</a>, |
| that you use a unique user agent in your requests (so we can identify you), |
| and that your service is of benefit to the Go community. |
| </p> |
| |
| <p> |
| Any requests for content removal should be directed to |
| <a href="mailto:security@golang.org">security@golang.org</a>. |
| Please include the URL and the reason for the request. |
| </p> |
| </div> |
| </div> |
| |
| <script async src="https://www.googletagmanager.com/gtag/js?id=UA-11222381-7"></script> |
| <script src="/js/jquery-linedtextarea.js" defer></script> |
| <script src="/js/playsite.js" defer></script> |
| |
| {{end}} |