Skip to content

Playgrounds

Introduction

Pour du code de démonstration simple dans un seul fichier, Go fournit un playground pour exécuter du code Go en ligne, sans avoir besoin d'installer l'environnement Go, seul un navigateur est nécessaire.

Adresse du code source du Playground : go-playground (github.com)

Adresse officielle du Playground : Go Playground - The Go Programming Language

Adresse du Playground tiers : The Go Play Space

Comme il s'agit d'un projet open-source, vous pouvez également choisir de créer votre propre playground sur votre propre serveur, consultez la documentation officielle pour la méthode d'installation. Le serveur Playground stocke les extraits de code téléchargés sur Google Cloud Storage, il est donc déconseillé de partager du code sensible. Pour les utilisateurs en Chine, il est recommandé d'utiliser le second car il ne nécessite pas de VPN, mais il est toujours basé sur le serveur officiel du Playground, et le code sera également synchronisé sur le serveur officiel.

J'ai créé un petit outil goplay pour interagir avec le serveur playground depuis la ligne de commande, il peut également être utilisé comme bibliothèque cliente HTTP pour playground.

HTTP API

Les méthodes mentionnées ci-dessus sont toutes des interactions via navigateur, si vous souhaitez interagir avec le serveur playground depuis un client, par exemple pour écrire un plugin vuepress go playground. Comme le serveur playground est lui-même un serveur HTTP, nous pouvons utiliser HTTP pour interagir avec lui. L'officiel ne fournit pas de documentation API, les API HTTP suivantes sont celles que j'ai apprises à partir du code du playground, il peut y avoir des différences au fil du temps, pour obtenir les informations les plus précises, vous pouvez consulter le dépôt vous-même.

Adresse du serveur officiel du playground : play.golang.org, les démonstrations ci-dessous sont basées sur le serveur officiel, si vous utilisez un serveur tiers, remplacez simplement le nom de domaine.

share

Partage un extrait de code sur le serveur playground, retourne l'identifiant de l'extrait correspondant.

http
POST https://play.golang.org/share
NomEmplacementTypeRequisDescription
bodybodystringNonnone

Exemple de réponse

13AbsRp7_S9

compile

Compile et exécute un extrait de code spécifié, puis retourne le résultat

http
POST https://play.golang.org/compile
NomEmplacementTypeDescription
bodyform-datastringExtrait de code
withVetform-datastring(true/false)go vet

Exemple de réponse

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

fmt

Retourne l'extrait de code formaté

http
POST https://play.golang.org/fmt
NomEmplacementTypeDescription
bodyform-datastringExtrait de code
importsform-datastring(true/false)fix imports

Exemple de réponse

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

Vérification de l'état de santé du serveur playground

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

Exemple de réponse

ok

version

Vérifier la version Go du serveur playground

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

Exemple de réponse

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

view

Voir l'extrait de code avec un identifiant spécifié

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

Exemple de réponse

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

import "fmt"

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

download

La méthode POST avec le paramètre download form retourne le résultat en tant que pièce jointe

http
POST https://play.golang.org/p/{id}.go
NomEmplacementTypeDescription
downloadform-datastring(true/false)Télécharger ou non

Exemple de réponse

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

import "fmt"

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

TIP

Si lors de l'utilisation du serveur officiel, vous recevez un message indiquant que vous ne pouvez pas accéder ou que vous voyez l'information suivante

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

C'est en raison de certaines circonstances de force majeure que les utilisateurs en Chine continentale ne peuvent pas accéder au serveur, et il y a aussi cette fonction dans le code source du playground

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

Pour les raisons spécifiques, consultez ici Issue #20065 · golang/go (github.com).

Golang by www.golangdev.cn edit