Playgrounds
บทนำ
สำหรับโค้ดสาธิตแบบไฟล์เดียวที่เรียบง่าย Go มี playground ให้รันโค้ด Go แบบออนไลน์ ไม่ต้องติดตั้งสภาพแวดล้อม Go ต้องการเพียงเบราว์เซอร์เท่านั้น
ที่อยู่โปรเจกต์ Open Source ของ Playground: go-playground (github.com)
ที่อยู่ Playground ทางการ: Go Playground - The Go Programming Language

ที่อยู่ Playground ของบุคคลที่สาม: The Go Play Space

เนื่องจากเป็นโปรเจกต์โอเพนซอร์ส คุณสามารถเลือกสร้าง playground ส่วนตัวบนเซิร์ฟเวอร์ของคุณเอง วิธีการติดตั้งดูได้จากเอกสารทางการ เซิร์ฟเวอร์ Playground จะเก็บโค้ดที่อัปโหลดไว้ใน Google Cloud Storage ดังนั้นไม่แนะนำให้แชร์โค้ดที่เป็นความลับ สำหรับผู้ใช้ในประเทศจีน แนะนำให้ใช้เว็บไซต์ที่สองเพราะไม่ต้องใช้ VPN แต่มันยังคงใช้เซิร์ฟเวอร์ Playground ทางการ โค้ดจะซิงค์ไปยังเซิร์ฟเวอร์ทางการด้วย
ผู้เขียนได้สร้างของเล่น goplay ใช้สำหรับโต้ตอบกับเซิร์ฟเวอร์ playground ในบรรทัดคำสั่ง และสามารถใช้งานเป็นไลบรารีไคลเอนต์ HTTP ของ playground ได้
HTTP API
ที่กล่าวมาข้างต้นล้วนเป็นวิธีการโต้ตอบผ่านเบราว์เซอร์ หากต้องการโต้ตอบกับเซิร์ฟเวอร์ playground จากมุมมองของไคลเอนต์ เช่น การเขียนปลั๊กอิน vuepress go playground เนื่องจากเซิร์ฟเวอร์ playground เองเป็นเซิร์ฟเวอร์ HTTP เราสามารถใช้วิธี HTTP ในการโต้ตอบกับมัน ทางการไม่ได้ให้เอกสาร API โดยตรง HTTP API ด้านล่างนี้ผู้เขียนได้เรียนรู้จากโค้ดของ playground เมื่อเวลาผ่านไปอาจมีความแตกต่างบางประการ หากต้องการข้อมูลที่ถูกต้องที่สุดสามารถตรวจสอบได้ด้วยตนเองใน repository
ที่อยู่เซิร์ฟเวอร์ playground ทางการ: play.golang.org การสาธิตด้านล่างนี้ใช้เซิร์ฟเวอร์ทางการเป็นหลัก หากใช้เซิร์ฟเวอร์ของบุคคลที่สามให้แทนที่โดเมนเนม
share
แชร์โค้ดไปยังเซิร์ฟเวอร์ playground ส่งคืน snippet id ที่สอดคล้อง
POST https://play.golang.org/share| ชื่อ | ตำแหน่ง | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| body | body | string | ไม่ | none |
ตัวอย่างการตอบกลับ
13AbsRp7_S9compile
คอมไพล์และรันโค้ดที่ระบุ แล้วส่งคืนผลลัพธ์
POST https://play.golang.org/compile| ชื่อ | ตำแหน่ง | ประเภท | คำอธิบาย |
|---|---|---|---|
| body | form-data | string | โค้ด |
| withVet | form-data | string(true/false) | go vet |
ตัวอย่างการตอบกลับ
{
"Errors": "",
"Events": [
{
"Message": "Hello, world\n",
"Kind": "stdout",
"Delay": 0
}
],
"Status": 0,
"IsTest": false,
"TestsFailed": 0
}fmt
ส่งคืนโค้ดที่จัดรูปแบบแล้ว
POST https://play.golang.org/fmt| ชื่อ | ตำแหน่ง | ประเภท | คำอธิบาย |
|---|---|---|---|
| body | form-data | string | โค้ด |
| imports | form-data | string(true/false) | fix imports |
ตัวอย่างการตอบกลับ
{
"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
ตรวจสอบสุขภาพของเซิร์ฟเวอร์ playground
GET https://play.golang.org/_ah/healthตัวอย่างการตอบกลับ
okversion
ตรวจสอบเวอร์ชัน go ของเซิร์ฟเวอร์ playground
GET https://play.golang.org/versionตัวอย่างการตอบกลับ
{
"Version": "go1.21.4",
"Release": "go1.21",
"Name": "Go 1.21"
}view
ดูโค้ดของ snippet id ที่ระบุ
GET https://play.golang.org/p/{id}.goตัวอย่างการตอบกลับ
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}download
วิธี post พร้อมพารามิเตอร์ download form จะส่งคืนผลลัพธ์ในรูปแบบ attachment
POST https://play.golang.org/p/{id}.go| ชื่อ | ตำแหน่ง | ประเภท | คำอธิบาย |
|---|---|---|---|
| download | form-data | string(true/false) | ดาวน์โหลดหรือไม่ |
ตัวอย่างการตอบกลับ
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}TIP
หากในระหว่างการใช้เซิร์ฟเวอร์ทางการ มีข้อความแจ้งเตือนว่าคุณไม่สามารถเข้าถึงหรือปรากฏข้อมูลดังต่อไปนี้
Viewing and/or sharing code snippets is not available in your country for legal reasons.นี่เป็นเพราะบางเหตุผลที่ผู้ใช้ในจีนแผ่นดินใหญ่ไม่สามารถเข้าถึงเซิร์ฟเวอร์ และในซอร์สโค้ดของ playground ก็มีฟังก์ชันนี้อยู่
func allowShare(r *http.Request) bool {
if r.Header.Get("X-AppEngine-Country") == "CN" {
return false
}
return true
}สาเหตุเฉพาะดูได้ที่นี่ Issue #20065 · golang/go (github.com)
