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.
POST https://play.golang.org/share| Nom | Emplacement | Type | Requis | Description |
|---|---|---|---|---|
| body | body | string | Non | none |
Exemple de réponse
13AbsRp7_S9compile
Compile et exécute un extrait de code spécifié, puis retourne le résultat
POST https://play.golang.org/compile| Nom | Emplacement | Type | Description |
|---|---|---|---|
| body | form-data | string | Extrait de code |
| withVet | form-data | string(true/false) | go vet |
Exemple de réponse
{
"Errors": "",
"Events": [
{
"Message": "Hello, world\n",
"Kind": "stdout",
"Delay": 0
}
],
"Status": 0,
"IsTest": false,
"TestsFailed": 0
}fmt
Retourne l'extrait de code formaté
POST https://play.golang.org/fmt| Nom | Emplacement | Type | Description |
|---|---|---|---|
| body | form-data | string | Extrait de code |
| imports | form-data | string(true/false) | fix imports |
Exemple de réponse
{
"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
GET https://play.golang.org/_ah/healthExemple de réponse
okversion
Vérifier la version Go du serveur playground
GET https://play.golang.org/versionExemple de réponse
{
"Version": "go1.21.4",
"Release": "go1.21",
"Name": "Go 1.21"
}view
Voir l'extrait de code avec un identifiant spécifié
GET https://play.golang.org/p/{id}.goExemple 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
POST https://play.golang.org/p/{id}.go| Nom | Emplacement | Type | Description |
|---|---|---|---|
| download | form-data | string(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
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).
