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.
POST https://play.golang.org/share| Nome | Localização | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
| body | body | string | Não | nenhum |
Exemplo de resposta
13AbsRp7_S9compile
Compila e executa um trecho de código especificado e retorna o resultado.
POST https://play.golang.org/compile| Nome | Localização | Tipo | Descrição |
|---|---|---|---|
| body | form-data | string | Trecho de código |
| withVet | form-data | string(true/false) | go vet |
Exemplo de resposta
{
"Errors": "",
"Events": [
{
"Message": "Hello, world\n",
"Kind": "stdout",
"Delay": 0
}
],
"Status": 0,
"IsTest": false,
"TestsFailed": 0
}fmt
Retorna o trecho de código formatado.
POST https://play.golang.org/fmt| Nome | Localização | Tipo | Descrição |
|---|---|---|---|
| body | form-data | string | Trecho de código |
| imports | form-data | string(true/false) | fix imports |
Exemplo de resposta
{
"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.
GET https://play.golang.org/_ah/healthExemplo de resposta
okversion
Verifica a versão do Go do servidor do playground.
GET https://play.golang.org/versionExemplo de resposta
{
"Version": "go1.21.4",
"Release": "go1.21",
"Name": "Go 1.21"
}view
Visualiza o trecho de código com o ID do snippet especificado.
GET https://play.golang.org/p/{id}.goExemplo 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.
POST https://play.golang.org/p/{id}.go| Nome | Localização | Tipo | Descrição |
|---|---|---|---|
| download | form-data | string(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
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).
