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

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

เนื่องจากเป็นโปรเจกต์โอเพนซอร์ส คุณสามารถเลือกสร้าง playground ส่วนตัวบนเซิร์ฟเวอร์ของคุณเองได้ วิธีการติดตั้งดูเอกสารทางการ เซิร์ฟเวอร์ Playground จะเก็บชิ้นส่วนโค้ดที่อัปโหลดไว้ในที่เก็บข้อมูลคลาวด์ของ Google ดังนั้นไม่แนะนำให้แชร์โค้ดที่เป็นความลับ สำหรับผู้ใช้ในจีน แนะนำให้ใช้ตัวที่สองเพราะไม่ต้องใช้เครือข่ายพิเศษ แต่มันยังคงอยู่บนเซิร์ฟเวอร์ Playground ทางการ โค้ดจะซิงค์ไปยังเซิร์ฟเวอร์ของทางการด้วย
ผู้เขียนได้สร้างของเล่น goplay สำหรับโต้ตอบกับเซิร์ฟเวอร์ playground ในบรรทัดคำสั่ง หรือสามารถใช้เป็นไลบรารีไคลเอนต์ HTTP ของ playground ได้
HTTP API
ที่กล่าวถึงข้างต้นล้วนเป็นวิธีการโต้ตอบผ่านเบราว์เซอร์ หากต้องการโต้ตอบกับเซิร์ฟเวอร์ playground จากมุมมองของไคลเอนต์ เช่น การเขียนปลั๊กอิน vuepress go playground เนื่องจากเซิร์ฟเวอร์ playground เองเป็นเซิร์ฟเวอร์ HTTP เราสามารถใช้วิธี HTTP เพื่อโต้ตอบกับมัน ทางการไม่ได้ให้เอกสาร API โดยตรง HTTP API ด้านล่างนี้ฉันเรียนรู้จากโค้ดของ playground เมื่อเวลาผ่านไปอาจมีความแตกต่างบางประการ เพื่อรับข้อมูลที่ถูกต้องที่สุดสามารถไปตรวจสอบในรีพอสิทอรีได้
ที่อยู่เซิร์ฟเวอร์ 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(ture/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(ture/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)
