القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

يعد تنسيق التعليمات البرمجية طريقة مهمة لتحسين قابلية القراءة والاتساق وإعادة الاستخدام. من السهل فهم التعليمات البرمجية المنسقة بشكل صحيح وتعديلها وصيانتها.

تتمثل إحدى ميزات Go الرائعة في اصطلاحات التنسيق المحددة جيدًا. يمكنك استخدام حزمة التنسيق المضمنة والأمر go fmt لتنسيق التعليمات البرمجية تلقائيًا. سيساعد هذا على ضمان أن مبرمجي Go الآخرين يمكنهم قراءتها بسهولة قدر الإمكان.

حزمة التنسيق والأمر fmt

ال شكل الحزمة تنفذ التنسيق القياسي لملف انتقل إلى شفرة المصدر. تعمل الحزمة مع ملف تنسيق الانتقال أداة سطر الأوامر للمرونة في تنسيق كود Go.

حزمة التنسيق هي وحدة فرعية في حزمة go. إليك كيفية استيراده:

يستورد"انتقال / تنسيق"

يمكنك تصفح وثائق الأمر go fmt بتحديد ملف يساعد الأمر قبل fmt يأمر:

اذهب للمساعدة FMT

حدد اسم ملف بعد الأمر fmt لتنسيق هذا الملف. سيؤدي هذا إلى تعديل المسافة البيضاء والمسافة البادئة في الشفرة لتتوافق مع معايير Go.

اذهب fmt main.go

وراء الكواليس ، يعد go fmt اسمًا مستعارًا للأمر gofmt ، على وجه التحديد:

instagram viewer
gofmt -l -w

تتسبب هذه العلامات في قيام gofmt بكتابة أي تغييرات على كل ملف تقدمه وإدراج أسماء الملفات التي يغيرها.

يمكنك إضافة ملف -x إشارة إلى الأمر fmt. تساعد العلامة -x في كتابة التغييرات من المنسق إلى الملف الأصلي.

اذهب fmt -x main.go

ال تعمل العلامة بشكل مشابه لـ -x ، لكنها لا تُحدث تغييرات. بدلاً من ذلك ، يعرض الأوامر التي سيتم تشغيلها باستخدام fmt بدون -n:

اذهب fmt -n main.go

تخبر العلامة المنسق بإظهار التغييرات ، مما يسمح لك بمراجعتها أولاً قبل تطبيقها.

إليك برنامج Go البسيط الذي يمر عبر الأعداد الصحيحة من صفر إلى خمسة ويطبع السلسلة "Hello World!".

// تنسيق ملف باسم main.go كما هو موضح في المثال أعلاه 

طَرد رئيسي
يستورد"FMT"
funcرئيسي() {
فار x int=5
ل أنا: =0؛أنا FMT. Println ("مرحبا بالعالم!")
}
}

تنسيق Go Source Code

تحتوي حزمة التنسيق على ملف مصدر وظيفة لتنسيق ملفات Go من البرامج. سيتعين عليك قراءة الملف وتمرير المحتويات كوسائط إلى وظيفة المصدر.

ستعيد وظيفة المصدر محتوى الملف المنسق الذي يمكنك كتابته إلى الملف أو ملف جديد.

يمكنك قراءة الملفات ذات الامتداد إقرا الملف وظيفة ioutil طَرد. تأخذ وظيفة ReadFile اسم الملف وتقوم بإرجاع محتوى الملف وخطأ في المعالجة.

fileContent ، يخطئ: = ioutil. إقرا الملف("main.go")

لو يخطئ! لا شيء {
سجل. فاتالن ("حدث خطأ في قراءة الملف"، يخطئ)
}

يؤدي تمرير محتوى الملف إلى وظيفة المصدر إلى إرجاع محتوى الملف المنسق وخطأ في المعالجة.

منسق ، يخطئ: = تنسيق. المصدر (fileContent)

لو يخطئ! لا شيء {
سجل. فاتالن ("حدث خطأ في التنسيق في وظيفة المصدر"، يخطئ)
}

يمكنك كتابة محتوى الملف المنسق إلى الملف بامتداد اكتب وظيفة ioutil طَرد. تأخذ الدالة WriteFile اسم الملف والمحتويات و وضع إذن الملف، بإرجاع أي خطأ (أخطاء). يكون وضع الإذن مناسبًا فقط في حالة عدم وجود الملف ، وفي هذه الحالة ، سيقوم برنامج WriteFile بإنشائه.

ال 0644 يعطي وضع إذن الملف:

  • مالك الملف قراءة وكتابة الأذونات.
  • قراءة الأذونات للمستخدمين الآخرين في نفس مجموعة المالك.
  • لا أذونات للمستخدمين الآخرين.
يخطئ = ioutil. اكتب ("main.go"منسق 0644)

لو يخطئ! لا شيء {
سجل. فاتالن ("حدث خطأ في كتابة الملف"، يخطئ)
}

بدلاً من ذلك ، يمكنك تمرير كود المصدر Go إلى وظيفة المصدر من أجل التنسيق. يمكنك تحديد الكود في شريحة بايت باستخدام العلامات (`):

طَرد رئيسي

يستورد (
"FMT"
"انتقال / تنسيق"
)

funcرئيسي() {
// برنامج بسيط يحسب مساحة المثلث بالرياضيات
// وظيفة
منسق ، يخطئ: = تنسيق. مصدر([]بايت(`
طَرد رئيسي
يستورد(
"FMT"
"رياضيات"
)
funcرئيسي(){
فار أ تعويم 64=3
فار ب تعويم 64=4
فار ج تعويم 64=5
فار س تعويم 64= (أ + ب + ج) /2
فار منطقة تعويم 64= الرياضيات. مربع (s * (s-a) * (s-b) * (s-c))
FMT. Println ("مساحة المثلث هي:"،منطقة)
}
`))

لو يخطئ! لا شيء {
سجل. فاتالن ("حدث خطأ في التنسيق في وظيفة المصدر"، يخطئ)
} آخر {
FMT. Println (خيط(منسق))
}
}

في التنسيق ، ستحتاج إلى تحويل شريحة البايت إلى سلسلة بامتداد خيط وظيفة. إليك كود المصدر المنسق.

تخصيص عملية التنسيق

يمكنك تخصيص عملية التنسيق باستخدام حزم التنسيق التكوين هيكل. تحتوي بنية التكوين على حقول حيث يمكنك تحديد خيارات التنسيق في إنشاء مثيل.

يستورد"انتقال / تنسيق"

التكوين: = & تنسيق. التكوين {
// Tabwidth يحدد عدد المسافات لكل علامة تبويب.
Tabwidth: 8,

// UseTabs يشير إلى ما إذا كان يجب على المنسق استخدام علامات التبويب بدلاً من
// مسافات.
UseTabs: خطأ شنيع,

// يتم استخدام TabIndent لتحديد ما إذا كان يجب أن تكون المسافة البادئة الأولية كذلك
// تم باستخدام علامات التبويب أو المسافات.
علامة جدولة حقيقي,

// يحدد NoFinalTab ما إذا كان يجب إزالة علامة التبويب النهائية من
// الأسطر قبل تنسيقها.
علامة التبويب NoFinalTab: حقيقي,

// Spaces تحدد ما إذا كان ينبغي استخدام المسافات للمحاذاة.
المساحات: حقيقي,

// NoTrimTrailingSpace يحدد ما إذا كان يجب أن تكون المسافة الزائدة بيضاء أم لا
// يتم قطعها من الأسطر قبل تنسيقها.
NoTrimTrailingSpace: خطأ شنيع,
}

يمكنك استخدام الحقول لتخصيص سلوك المنسق الخاص بك عن طريق تعيين الخيارات بناءً على متطلباتك.

يمكنك بعد ذلك استخدام طريقة المصدر الخاصة بهذه البنية لتنسيق شريحة بايت بناءً على التكوين الخاص بك.

funcرئيسي() {
fileContent ، يخطئ: = ioutil. إقرا الملف("main.go")

// لاحظ أن هذه طريقة مصدر من النوع `config` ، وليست من
// `format` تحزم نفسها على الرغم من أن الوظيفة هي نفسها ، ستفعل ذلك
// تحتاج إلى الالتزام بهذا إذا كنت بحاجة إلى تكوين المنسق
منسق ، يخطئ: = config. المصدر (fileContent)

لو يخطئ! لا شيء {
سجل. فاتالن ("حدث خطأ في التنسيق في نوع التكوين"، يخطئ)
}

ioutil. اكتب ("main.go"منسق 0644)
}

استدعاء config. تعمل الدالة Source () مثل هذه على تنسيق محتويات ملف main.go ملف باستخدام خيارات التكوين. تقوم بإرجاع المحتويات المنسقة كشريحة بايت وخطأ.

يمكنك تنسيق السلسلة ومعالجتها في Go

يمكن أن تساعدك حزمة التنسيق والأمر go fmt في أتمتة عملية تنسيق التعليمات البرمجية الخاصة بك.

يوفر Go أيضًا حزمة fmt لتنسيق السلسلة وحزمة سلاسل لمعالجة السلسلة.

تقوم حزمة fmt بتنفيذ إدخال / إخراج أبسط مع وظائف مماثلة لوظائف C printf و scanf. تنفذ وظيفة السلاسل وظائف بسيطة لمعالجة السلاسل المشفرة UTF-8.