Playgrounds
Introduzione
Per alcuni semplici codici dimostrativi a file singolo, Go fornisce playground per eseguire il codice Go online, senza bisogno di installare l'ambiente Go, è sufficiente un browser.
Indirizzo open source di Playground: go-playground (github.com)
Indirizzo ufficiale di Playground: Go Playground - The Go Programming Language

Indirizzo di Playground di terze parti: The Go Play Space

Poiché si tratta di un progetto open source, puoi anche scegliere di creare un playground personale sul tuo server, consulta la documentazione ufficiale per il metodo di installazione. Il server Playground memorizzerà i frammenti di codice caricati su Google Cloud Storage, quindi non è consigliabile condividere codice sensibile. Per gli utenti in Cina continentale, si consiglia di usare il secondo perché non richiede una rete speciale, ma è comunque basato sul server ufficiale di Playground e il codice verrà sincronizzato anche sul server ufficiale.
Ho creato uno strumento goplay per interagire con il server playground dalla riga di comando, che può anche essere utilizzato come libreria client HTTP per playground.
HTTP API
Quelli menzionati sopra sono tutti metodi di interazione tramite browser, se si desidera interagire con il server playground dal lato client, ad esempio per scrivere un plugin vuepress go playground. Poiché il server playground è esso stesso un server HTTP, possiamo usare il modo HTTP per interagire con esso. Ufficialmente non fornisce documentazione API, le seguenti HTTP API sono state apprese dal codice di playground, potrebbero esserci alcune differenze con il passare del tempo, per ottenere le informazioni più accurate puoi consultare il repository.
Indirizzo del server ufficiale di playground: play.golang.org, le seguenti dimostrazioni si basano tutte sul server ufficiale, se si usa un server di terze parti basta sostituire il nome di dominio.
share
Condivide un frammento di codice sul server playground e restituisce l'id dello snippet corrispondente.
POST https://play.golang.org/share| Nome | Posizione | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| body | body | string | No | nessuno |
Esempio di risposta
13AbsRp7_S9compile
Compila ed esegue un frammento di codice specificato, quindi restituisce il risultato
POST https://play.golang.org/compile| Nome | Posizione | Tipo | Descrizione |
|---|---|---|---|
| body | form-data | string | Frammento di codice |
| withVet | form-data | string(true/false) | go vet |
Esempio di risposta
{
"Errors": "",
"Events": [
{
"Message": "Hello, world\n",
"Kind": "stdout",
"Delay": 0
}
],
"Status": 0,
"IsTest": false,
"TestsFailed": 0
}fmt
Restituisce il frammento di codice formattato
POST https://play.golang.org/fmt| Nome | Posizione | Tipo | Descrizione |
|---|---|---|---|
| body | form-data | string | Frammento di codice |
| imports | form-data | string(true/false) | fix imports |
Esempio di risposta
{
"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
Esegue un controllo di salute sul server playground
GET https://play.golang.org/_ah/healthEsempio di risposta
okversion
Visualizza la versione go del server playground
GET https://play.golang.org/versionEsempio di risposta
{
"Version": "go1.21.4",
"Release": "go1.21",
"Name": "Go 1.21"
}view
Visualizza un frammento di codice con id snippet specificato
GET https://play.golang.org/p/{id}.goEsempio di risposta
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}download
Il metodo post con il parametro form download restituirà il risultato come allegato
POST https://play.golang.org/p/{id}.go| Nome | Posizione | Tipo | Descrizione |
|---|---|---|---|
| download | form-data | string(true/false) | Se scaricare |
Esempio di risposta
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}TIP
Se durante l'uso del server ufficiale, viene visualizzato un messaggio di impossibilità di accesso o appare la seguente informazione
Viewing and/or sharing code snippets is not available in your country for legal reasons.Questo è dovuto a force majeure per cui gli utenti nella Cina continentale non possono accedere al server, e nel codice sorgente di playground c'è anche questa funzione
func allowShare(r *http.Request) bool {
if r.Header.Get("X-AppEngine-Country") == "CN" {
return false
}
return true
}Per i motivi specifici, consulta qui Issue #20065 · golang/go (github.com).
