| {{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 Playground-button" title="Format this code">Format</button> | |
| {{- if $canShare}} | |
| <button id="share" class="Button js-playgroundShareEl Playground-button" 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 class="Playground-preContainer" id="editor-description"> | |
| Press Esc to move out of the editor. | |
| </div> | |
| <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" aria-describedby="editor-description">{{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}} |