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 المقابل.

http
POST https://play.golang.org/share
الاسمالموقعالنوعمطلوبالوصف
bodybodystringلالا شيء

مثال على الاستجابة

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 محدد

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 ستعيد النتيجة كملف مرفق

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 تم تحريره بواسطة www.golangdev.cn