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 المقابل.
POST https://play.golang.org/share| الاسم | الموقع | النوع | مطلوب | الوصف |
|---|---|---|---|---|
| body | body | string | لا | لا شيء |
مثال على الاستجابة
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 محدد
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 ستعيد النتيجة كملف مرفق
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).
