Playgrounds
Einführung
Für einfache Einzeldatei-Demo-Code bietet Go einen Playground, um Go-Code online auszuführen, ohne eine Go-Umgebung installieren zu müssen - es ist nur ein Browser erforderlich.
Playground Open-Source-Adresse: go-playground (github.com)
Offizielle Playground-Adresse: Go Playground - The Go Programming Language

Drittanbieter-Playground-Adresse: The Go Play Space

Da es sich um ein Open-Source-Projekt handelt, können Sie auch wählen, einen persönlichen Playground auf Ihrem eigenen Server einzurichten. Die Installationsmethode finden Sie in der offiziellen Dokumentation. Der Playground-Server speichert hochgeladene Code-Schnipsel im Google Cloud Storage, daher wird nicht empfohlen, sensiblen Code zu teilen. Für Benutzer in Festlandchina wird empfohlen, die zweite Option zu verwenden, da kein VPN erforderlich ist. Sie basiert jedoch immer noch auf dem offiziellen Playground-Server, und der Code wird ebenfalls mit dem offiziellen Server synchronisiert.
Der Autor hat selbst ein Tool namens goplay erstellt, um in der Kommandozeile mit dem Playground-Server zu interagieren. Es kann auch als Playground-HTTP-Client-Bibliothek verwendet werden.
HTTP-API
Die oben genannten Optionen sind browserbasierte Interaktionsmethoden. Wenn Sie aus Client-Sicht mit dem Playground-Server interagieren möchten, z. B. beim Schreiben eines VuePress-Go-Playground-Plugins. Da der Playground-Server selbst ein HTTP-Server ist, können wir über HTTP mit ihm interagieren. Offiziell gibt es keine API-Dokumentation. Die folgenden HTTP-APIs habe ich aus dem Playground-Code herausgefunden. Im Laufe der Zeit kann es zu Abweichungen kommen. Um die genauesten Informationen zu erhalten, können Sie das Repository selbst konsultieren.
Offizielle Playground-Server-Adresse: play.golang.org, die folgenden Demonstrationen verwenden den offiziellen Server. Wenn Sie einen Drittanbieter-Server verwenden, ersetzen Sie einfach die Domain.
share
Teilen Sie einen Code-Schnipsel auf dem Playground-Server und geben Sie die entsprechende Snippet-ID zurück.
POST https://play.golang.org/share| Name | Position | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
| body | body | string | Nein | keine |
Antwortbeispiel
13AbsRp7_S9compile
Kompilieren und Ausführen des angegebenen Code-Schnipsels, dann das Ergebnis zurückgeben
POST https://play.golang.org/compile| Name | Position | Typ | Beschreibung |
|---|---|---|---|
| body | form-data | string | Code-Schnipsel |
| withVet | form-data | string(true/false) | go vet |
Antwortbeispiel
{
"Errors": "",
"Events": [
{
"Message": "Hello, world\n",
"Kind": "stdout",
"Delay": 0
}
],
"Status": 0,
"IsTest": false,
"TestsFailed": 0
}fmt
Gibt den formatierten Code-Schnipsel zurück
POST https://play.golang.org/fmt| Name | Position | Typ | Beschreibung |
|---|---|---|---|
| body | form-data | string | Code-Schnipsel |
| imports | form-data | string(true/false) | fix imports |
Antwortbeispiel
{
"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
Gesundheitsprüfung des Playground-Servers
GET https://play.golang.org/_ah/healthAntwortbeispiel
okversion
Go-Version des Playground-Servers anzeigen
GET https://play.golang.org/versionAntwortbeispiel
{
"Version": "go1.21.4",
"Release": "go1.21",
"Name": "Go 1.21"
}view
Code-Schnipsel mit angegebener Snippet-ID anzeigen
GET https://play.golang.org/p/{id}.goAntwortbeispiel
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}download
POST-Methode mit download-Form-Parameter gibt das Ergebnis als Attachment zurück
POST https://play.golang.org/p/{id}.go| Name | Position | Typ | Beschreibung |
|---|---|---|---|
| download | form-data | string(true/false) | Ob herunterladen |
Antwortbeispiel
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}TIP
Wenn Sie bei der Verwendung des offiziellen Servers aufgefordert werden, dass Sie keinen Zugriff haben, oder folgende Meldung erscheint
Viewing and/or sharing code snippets is not available in your country for legal reasons.Dies liegt an einer höheren Gewalt, die Benutzer in Festlandchina den Zugriff auf den Server verhindert. Im Playground-Quellcode gibt es auch eine solche Funktion
func allowShare(r *http.Request) bool {
if r.Header.Get("X-AppEngine-Country") == "CN" {
return false
}
return true
}Den genauen Grund finden Sie hier Issue #20065 · golang/go (github.com).
