Skip to content

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.

http
POST https://play.golang.org/share
NomePosizioneTipoObbligatorioDescrizione
bodybodystringNonessuno

Esempio di risposta

13AbsRp7_S9

compile

Compila ed esegue un frammento di codice specificato, quindi restituisce il risultato

http
POST https://play.golang.org/compile
NomePosizioneTipoDescrizione
bodyform-datastringFrammento di codice
withVetform-datastring(true/false)go vet

Esempio di risposta

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

fmt

Restituisce il frammento di codice formattato

http
POST https://play.golang.org/fmt
NomePosizioneTipoDescrizione
bodyform-datastringFrammento di codice
importsform-datastring(true/false)fix imports

Esempio di risposta

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

Esegue un controllo di salute sul server playground

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

Esempio di risposta

ok

version

Visualizza la versione go del server playground

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

Esempio di risposta

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

view

Visualizza un frammento di codice con id snippet specificato

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

Esempio 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

http
POST https://play.golang.org/p/{id}.go
NomePosizioneTipoDescrizione
downloadform-datastring(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

go
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).

Golang by www.golangdev.cn edit