Skip to content

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 ที่สอดคล้องกัน

http
POST https://play.golang.org/share
ชื่อตำแหน่งประเภทจำเป็นคำอธิบาย
bodybodystringไม่none

ตัวอย่างการตอบสนอง

13AbsRp7_S9

compile

คอมไพล์และรันชิ้นส่วนโค้ดที่ระบุ แล้วส่งคืนผลลัพธ์

http
POST https://play.golang.org/compile
ชื่อตำแหน่งประเภทคำอธิบาย
bodyform-datastringชิ้นส่วนโค้ด
withVetform-datastring(ture/false)go vet

ตัวอย่างการตอบสนอง

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

fmt

ส่งคืนชิ้นส่วนโค้ดที่จัดรูปแบบแล้ว

http
POST https://play.golang.org/fmt
ชื่อตำแหน่งประเภทคำอธิบาย
bodyform-datastringชิ้นส่วนโค้ด
importsform-datastring(ture/false)fix imports

ตัวอย่างการตอบสนอง

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

ตรวจสอบสุขภาพเซิร์ฟเวอร์ playground

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

ตัวอย่างการตอบสนอง

ok

version

ดูเวอร์ชัน go ของเซิร์ฟเวอร์ playground

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

ตัวอย่างการตอบสนอง

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

view

ดูชิ้นส่วนโค้ดของ snippet id ที่ระบุ

http
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

http
POST https://play.golang.org/p/{id}.go
ชื่อตำแหน่งประเภทคำอธิบาย
downloadform-datastring(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 ก็มีฟังก์ชันนี้

go
func allowShare(r *http.Request) bool {
  if r.Header.Get("X-AppEngine-Country") == "CN" {
    return false
  }
  return true
}

ดูเหตุผลเฉพาะที่นี่ Issue #20065 · golang/go (github.com)

Golang by www.golangdev.cn edit