ماذا تفعل الأداة
يعيد منسّق Go كتابة كود Go المصدري بالنمط القياسي الوحيد الذي يستخدمه مجتمع Go بأكمله. الصق ملفًا أو مقتطفًا فيعود إليك بمسافات gofmt البادئة وتباعده وتجميعه للاستيرادات ومحاذاته لحقول struct والتعليقات.
تشغّل الأداة gofmt الحقيقي من أدوات Go، مُترجمًا إلى WebAssembly. لا شيء تقريبي هنا: ما تراه هو بالضبط ما سيكتبه go fmt، لذا يمكن عمل commit للكود المنسّق دون التسبب في أي diff في CI.
طريقة الاستخدام
- الصق كود Go، أو افتح ملف
.go. - يظهر الكود المنسّق على اليسار أثناء الكتابة.
- أبقِ المسافة البادئة Tab للكود الذي ستعمل له commit. واختر مسافتان أو 4 مسافات عندما يُوضع الكود في مستند أو شريحة عرض أو موقع يعرض علامات Tab بعرض كبير.
- انسخ النتيجة أو نزّلها.
إذا تعذّر تحليل الكود، تعرض الأداة أول خطأ مع سطره وعموده، مثل expected ')', found '{'، ويمكنك الانتقال مباشرة إلى ذلك السطر.
مثال
المثال برنامج قصير مضغوط في أقل عدد ممكن من الأسطر: استيرادات مفصولة بفواصل منقوطة، وstruct في سطرين، ودوال بلا مسافات حول العوامل. بعد التنسيق:
- تصبح الاستيرادات كتلة بين قوسين مع حزمة واحدة في كل سطر؛
- توضع حقول struct في أسطر مستقلة وتُحاذى أنواعها في عمود؛
- يصبح
if u.Age<18{هوif u.Age < 18 {مع وضع جسمه في سطر مستقل؛ - تحصل القيم المركّبة (composite literals) على مسافات بعد الفواصل والنقطتين.
ما يغيّره gofmt وما لا يغيّره
لا يغيّر gofmt إلا الشكل. فهو لا يعيد تسمية المعرّفات أبدًا، ولا يعيد ترتيب التصريحات، ولا يحذف الاستيرادات غير المستخدمة؛ تلك مهام أدوات مثل goimports وgo vet. كما يحتفظ بفواصل الأسطر حيث يكون لها معنى، فتبقى قائمة الوسائط الطويلة التي قسّمتها على عدة أسطر مقسّمة.
تُحفظ التعليقات ويُعاد إزاحتها مع الكود المحيط بها. وتُحاذى التعليقات اللاحقة في الأسطر المتتالية في عمود، تمامًا مثل حقول struct.
نصائح
- التنسيق طريقة سريعة للعثور على قوس ناقص: موضع الخطأ يشير عادةً إلى أول سطر بعد الخطأ.
- شغّل المنسّق قبل مشاركة الكود في issue أو مراجعة، فيتمكن المراجعون من التركيز على ما يفعله الكود بدلًا من شكله.
- في محررك، فعّل “format on save” مع gopls لتطابق ملفاتك هذه المخرجات دائمًا.
الأسئلة الشائعة
› هل هذا gofmt الحقيقي؟
نعم. المنسّق هو كود gofmt من أدوات Go مُترجمًا إلى WebAssembly، لذا تطابق المخرجات بايتًا ببايت ما يطبعه `gofmt` أو `go fmt` على جهازك.
› هل أحتاج إلى عبارة package؟
لا. الملف الكامل هو الأفضل، لكن gofmt يقبل أيضًا قائمة تصريحات أو بضع عبارات، وهذا مفيد للمقتطفات المنسوخة من تدوينة أو محادثة.
› لماذا تُستخدم علامات Tab للمسافة البادئة؟
يستخدم gofmt دائمًا Tab للمسافة البادئة والمسافات للمحاذاة. هذا هو عُرف Go، وتعرض المحررات علامات Tab بالعرض الذي تفضّله. إذا احتجت إلى مسافات لمستند أو شريحة عرض، فاختر مسافتين أو 4 مسافات، ولن تُستبدل إلا علامات Tab البادئة.
› هل يُرفع الكود الخاص بي؟
لا. تُنزَّل وحدة WebAssembly مرة واحدة ويجري التنسيق محليًا في متصفحك.