Skip to content

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.

http
POST https://play.golang.org/share
NamaLokasiTipeWajibKeterangan
bodybodystringTidaknone

Contoh respons

13AbsRp7_S9

compile

Kompilasi dan jalankan segmen kode yang ditentukan, lalu kembalikan hasilnya

http
POST https://play.golang.org/compile
NamaLokasiTipeKeterangan
bodyform-datastringSegmen kode
withVetform-datastring(true/false)go vet

Contoh respons

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

fmt

Kembalikan segmen kode yang telah diformat

http
POST https://play.golang.org/fmt
NamaLokasiTipeKeterangan
bodyform-datastringSegmen kode
importsform-datastring(true/false)fix imports

Contoh respons

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

Lakukan health check pada server playground

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

Contoh respons

ok

version

Lihat versi go server playground

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

Contoh respons

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

view

Lihat segmen kode dengan id snippet yang ditentukan

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

Contoh 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

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

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

Golang by www.golangdev.cn edit