Skip to content

Playgrounds

Introdução

Para algumas demonstrações de código simples em arquivo único, o Go fornece o playground para executar código Go online, sem necessidade de instalar o ambiente Go, basta um navegador.

Endereço do código-fonte aberto do Playground: go-playground (github.com)

Endereço oficial do Playground: Go Playground - The Go Programming Language

Endereço do Playground de terceiros: The Go Play Space

Como é um projeto de código aberto, você também pode optar por criar seu próprio playground em seu servidor. Consulte a documentação oficial para o método de instalação. O servidor do Playground armazenará o código enviado no Google Cloud Storage, portanto, não é recomendado compartilhar código sensível. Para usuários na China continental, é recomendado usar o segundo, pois não requer acesso à internet com restrições, mas ainda é baseado no servidor oficial do Playground e o código também será sincronizado com o servidor oficial.

Eu mesmo criei um brinquedo goplay para interagir com o servidor do playground na linha de comando, também pode ser usado como uma biblioteca cliente HTTP do playground.

HTTP API

As interações mencionadas acima são feitas através do navegador. Se você quiser interagir com o servidor do playground a partir de um cliente, como escrever um plugin vuepress go playground. Como o servidor do playground é um servidor HTTP, podemos usar HTTP para interagir com ele. O próprio oficial não fornece documentação de API. As seguintes APIs HTTP são as que aprendi no código do playground. Pode haver algumas diferenças ao longo do tempo. Para obter as informações mais precisas, você pode verificar o repositório por conta própria.

Endereço do servidor oficial do playground: play.golang.org. As demonstrações abaixo são baseadas no servidor oficial. Se você usar um servidor de terceiros, basta substituir o nome de domínio.

share

Compartilha um trecho de código com o servidor do playground e retorna o ID do snippet correspondente.

http
POST https://play.golang.org/share
NomeLocalizaçãoTipoObrigatórioDescrição
bodybodystringNãonenhum

Exemplo de resposta

13AbsRp7_S9

compile

Compila e executa um trecho de código especificado e retorna o resultado.

http
POST https://play.golang.org/compile
NomeLocalizaçãoTipoDescrição
bodyform-datastringTrecho de código
withVetform-datastring(true/false)go vet

Exemplo de resposta

json
{
  "Errors": "",
  "Events": [
    {
      "Message": "Hello, world\n",
      "Kind": "stdout",
      "Delay": 0
    }
  ],
  "Status": 0,
  "IsTest": false,
  "TestsFailed": 0
}

fmt

Retorna o trecho de código formatado.

http
POST https://play.golang.org/fmt
NomeLocalizaçãoTipoDescrição
bodyform-datastringTrecho de código
importsform-datastring(true/false)fix imports

Exemplo de resposta

json
{
  "Body": "// You can edit this code!\n// Click here and start typing.\npackage main\n\nimport \"fmt\"\n\nfunc main() {\n\tfmt.Println(\"Hello, world\")\n}\n",
  "Error": ""
}

health

Verificação de saúde do servidor do playground.

http
GET https://play.golang.org/_ah/health

Exemplo de resposta

ok

version

Verifica a versão do Go do servidor do playground.

http
GET https://play.golang.org/version

Exemplo de resposta

json
{
  "Version": "go1.21.4",
  "Release": "go1.21",
  "Name": "Go 1.21"
}

view

Visualiza o trecho de código com o ID do snippet especificado.

http
GET https://play.golang.org/p/{id}.go

Exemplo de resposta

// You can edit this code!
// Click here and start typing.
package main

import "fmt"

func main() {
  fmt.Println("Hello, world")
}

download

O método POST com o parâmetro de formulário de download retornará o resultado como um anexo.

http
POST https://play.golang.org/p/{id}.go
NomeLocalizaçãoTipoDescrição
downloadform-datastring(true/false)Fazer download

Exemplo de resposta

// You can edit this code!
// Click here and start typing.
package main

import "fmt"

func main() {
  fmt.Println("Hello, world")
}

TIP

Se durante o uso do servidor oficial, você receber uma mensagem indicando que não é possível acessar ou aparecer a seguinte informação

Viewing and/or sharing code snippets is not available in your country for legal reasons.

Isso ocorre devido a algumas forças maiores que tornam os usuários na China continental incapazes de acessar o servidor. Além disso, há uma função no código-fonte do playground

go
func allowShare(r *http.Request) bool {
  if r.Header.Get("X-AppEngine-Country") == "CN" {
    return false
  }
  return true
}

Para mais detalhes, consulte Issue #20065 · golang/go (github.com).

Golang por www.golangdev.cn edit