Playgrounds
Pengenalan
Untuk beberapa kode demonstrasi file tunggal yang sederhana, go menyediakan playground untuk menjalankan kode go secara online, tidak perlu menginstal environment go, hanya memerlukan browser saja.
Alamat open source Playground: go-playground (github.com)
Alamat Playground resmi: Go Playground - The Go Programming Language

Alamat Playground pihak ketiga: The Go Play Space

Karena ini adalah proyek open source, Anda juga dapat memilih untuk membangun playground pribadi di server Anda sendiri, metode instalasi lihat dokumentasi resmi. Server Playground akan menyimpan segmen kode yang diunggah ke Google Cloud Storage, jadi tidak direkomendasikan untuk berbagi kode sensitif. Untuk pengguna di Tiongkok, direkomendasikan menggunakan yang kedua karena tidak memerlukan magic internet, tetapi tetap berbasis server Playground resmi, kode juga akan disinkronkan ke server resmi.
Penulis sendiri membuat mainan goplay, digunakan untuk berinteraksi dengan server playground di dalam command line, juga dapat digunakan sebagai library klien HTTP playground.
HTTP API
Yang disebutkan di atas adalah cara interaksi browser, jika ingin berinteraksi dengan server playground dari sisi klien, misalnya menulis plugin vuepress go playground. Karena server playground sendiri adalah server HTTP, kita dapat menggunakan cara HTTP untuk berinteraksi dengannya. Resmi sendiri tidak menyediakan dokumentasi API, API HTTP di bawah ini saya pahami dari kode playground, seiring berjalannya waktu mungkin ada beberapa perbedaan, untuk mendapatkan informasi paling akurat dapat pergi ke repositori sendiri untuk memeriksa.
Alamat server playground resmi: play.golang.org, demonstrasi di bawah ini berdasarkan server resmi, jika menggunakan server pihak ketiga ganti nama domain saja.
share
Berbagi segmen kode ke server playground, mengembalikan id snippet yang sesuai.
POST https://play.golang.org/share| Nama | Lokasi | Tipe | Wajib | Keterangan |
|---|---|---|---|---|
| body | body | string | Tidak | none |
Contoh respons
13AbsRp7_S9compile
Kompilasi dan jalankan segmen kode yang ditentukan, lalu kembalikan hasilnya
POST https://play.golang.org/compile| Nama | Lokasi | Tipe | Keterangan |
|---|---|---|---|
| body | form-data | string | Segmen kode |
| withVet | form-data | string(true/false) | go vet |
Contoh respons
{
"Errors": "",
"Events": [
{
"Message": "Hello, world\n",
"Kind": "stdout",
"Delay": 0
}
],
"Status": 0,
"IsTest": false,
"TestsFailed": 0
}fmt
Kembalikan segmen kode yang telah diformat
POST https://play.golang.org/fmt| Nama | Lokasi | Tipe | Keterangan |
|---|---|---|---|
| body | form-data | string | Segmen kode |
| imports | form-data | string(true/false) | fix imports |
Contoh respons
{
"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
Lakukan health check pada server playground
GET https://play.golang.org/_ah/healthContoh respons
okversion
Lihat versi go server playground
GET https://play.golang.org/versionContoh respons
{
"Version": "go1.21.4",
"Release": "go1.21",
"Name": "Go 1.21"
}view
Lihat segmen kode dengan id snippet yang ditentukan
GET https://play.golang.org/p/{id}.goContoh respons
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}download
Metode post membawa parameter form download akan mengembalikan hasil dengan cara attachment
POST https://play.golang.org/p/{id}.go| Nama | Lokasi | Tipe | Keterangan |
|---|---|---|---|
| download | form-data | string(true/false) | Apakah mengunduh |
Contoh respons
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}TIP
Jika dalam proses menggunakan server resmi, memberi tahu Anda tidak dapat mengakses atau muncul informasi seperti di bawah ini
Viewing and/or sharing code snippets is not available in your country for legal reasons.Ini karena beberapa force majeure pengguna di wilayah Tiongkok daratan tidak dapat mengakses server, dan di kode sumber playground juga ada fungsi seperti ini
func allowShare(r *http.Request) bool {
if r.Header.Get("X-AppEngine-Country") == "CN" {
return false
}
return true
}Alasan spesifik lihat di sini Issue #20065 · golang/go (github.com).
