Skip to content

Playgrounds

Introducción

Para algunos códigos de demostración simples de un solo archivo, Go proporciona playground para ejecutar código Go en línea, sin necesidad de instalar el entorno de Go, solo necesitas un navegador.

Repositorio open source de Playground: go-playground (github.com)

Dirección oficial de Playground: Go Playground - The Go Programming Language

Dirección de Playground de terceros: The Go Play Space

Como es un proyecto de código abierto, también puedes elegir configurar un playground personal en tu propio servidor, el método de instalación se encuentra en la documentación oficial. El servidor de Playground almacenará los fragmentos de código subidos en Google Cloud Storage, por lo que no se recomienda compartir código sensible. Para usuarios en China continental, se recomienda usar el segundo porque no requiere acceso especial a internet, pero sigue basándose en el servidor oficial de Playground, y el código también se sincronizará con los servidores oficiales.

El autor creó una herramienta goplay para interactuar con el servidor de playground desde la línea de comandos, también se puede usar como biblioteca cliente HTTP de playground.

HTTP API

Los mencionados anteriormente son métodos de interacción a través del navegador. Si quieres interactuar con el servidor de playground desde la perspectiva del cliente, por ejemplo, escribiendo un plugin de vuepress go playground. Como el servidor de playground en sí es un servidor HTTP, podemos interactuar con él usando HTTP. Oficialmente no se proporciona documentación de API, la siguiente HTTP API fue obtenida del código de playground, puede haber algunas diferencias con el tiempo. Para obtener la información más precisa, puedes consultar directamente el repositorio.

Dirección oficial del servidor de playground: play.golang.org, las siguientes demostraciones usarán el servidor oficial como referencia. Si usas un servidor de terceros, simplemente reemplaza el dominio.

share

Comparte un fragmento de código en el servidor de playground y devuelve el ID del snippet correspondiente.

http
POST https://play.golang.org/share
NombreUbicaciónTipoRequeridoDescripción
bodybodystringNonone

Ejemplo de respuesta

13AbsRp7_S9

compile

Compila y ejecuta el fragmento de código especificado, luego devuelve el resultado

http
POST https://play.golang.org/compile
NombreUbicaciónTipoDescripción
bodyform-datastringFragmento de código
withVetform-datastring(true/false)go vet

Ejemplo de respuesta

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

fmt

Devuelve el fragmento de código formateado

http
POST https://play.golang.org/fmt
NombreUbicaciónTipoDescripción
bodyform-datastringFragmento de código
importsform-datastring(true/false)fix imports

Ejemplo de respuesta

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

Realiza una verificación de salud del servidor de playground

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

Ejemplo de respuesta

ok

version

Ver la versión de Go del servidor de playground

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

Ejemplo de respuesta

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

view

Ver el fragmento de código de un ID de snippet específico

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

Ejemplo de respuesta

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

import "fmt"

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

download

El método post con el parámetro download form devolverá el resultado como attachment

http
POST https://play.golang.org/p/{id}.go
NombreUbicaciónTipoDescripción
downloadform-datastring(true/false)Si descargar

Ejemplo de respuesta

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

import "fmt"

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

TIP

Si durante el uso del servidor oficial, te aparece un mensaje de que no puedes acceder o aparece información como la siguiente

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

Esto se debe a cierta fuerza mayor que impide que los usuarios de China continental accedan al servidor, y en el código fuente de playground también existe esta función

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

La razón específica se puede ver aquí Issue #20065 · golang/go (github.com).

Golang editado por www.golangdev.cn