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.
POST https://play.golang.org/share| Nombre | Ubicación | Tipo | Requerido | Descripción |
|---|---|---|---|---|
| body | body | string | No | none |
Ejemplo de respuesta
13AbsRp7_S9compile
Compila y ejecuta el fragmento de código especificado, luego devuelve el resultado
POST https://play.golang.org/compile| Nombre | Ubicación | Tipo | Descripción |
|---|---|---|---|
| body | form-data | string | Fragmento de código |
| withVet | form-data | string(true/false) | go vet |
Ejemplo de respuesta
{
"Errors": "",
"Events": [
{
"Message": "Hello, world\n",
"Kind": "stdout",
"Delay": 0
}
],
"Status": 0,
"IsTest": false,
"TestsFailed": 0
}fmt
Devuelve el fragmento de código formateado
POST https://play.golang.org/fmt| Nombre | Ubicación | Tipo | Descripción |
|---|---|---|---|
| body | form-data | string | Fragmento de código |
| imports | form-data | string(true/false) | fix imports |
Ejemplo de respuesta
{
"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
GET https://play.golang.org/_ah/healthEjemplo de respuesta
okversion
Ver la versión de Go del servidor de playground
GET https://play.golang.org/versionEjemplo de respuesta
{
"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
GET https://play.golang.org/p/{id}.goEjemplo 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
POST https://play.golang.org/p/{id}.go| Nombre | Ubicación | Tipo | Descripción |
|---|---|---|---|
| download | form-data | string(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
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).
