كيف تكتب شيفرة Go › تنظيم الشيفرة 2 / 6 السابق التالي

تنظيم الشيفرة

تُنظَّم برامج Go في حزم (packages). والحزمة مجموعة من ملفات مصدر في المجلد نفسه تُصرَّف معًا. أما الدوال والأنواع والمتغيّرات والثوابت المعرَّفة في ملف مصدر فتكون مرئية لجميع ملفات المصدر الأخرى داخل الحزمة نفسها.

ويحتوي المستودع (repository) على وحدة أو أكثر. والوحدة مجموعة من حزم Go المترابطة تُنشر معًا. والمستودع الذي يحتوي شيفرة Go يحتوي عادةً وحدة واحدة فقط، تقع في جذر المستودع. وملف باسم go.mod هناك يُعلن مسار الوحدة: وهو بادئة مسار الاستيراد لكل الحزم داخل الوحدة. وتحتوي الوحدة على الحزم الموجودة في المجلد الحاوي لملف go.mod، وكذلك في المجلدات الفرعية له، حتى المجلد الفرعي التالي الذي يحتوي ملف go.mod آخر (إن وُجد).

ولاحظ أنك لا تحتاج إلى نشر شيفرتك في مستودع بعيد كي تستطيع بناؤها. فيمكن تعريف وحدة محليًا من دون أن تنتمي إلى أي مستودع. لكن من حسن العادات أن تنظّم شيفرتك كما لو كنت ستنشرها يومًا ما.

وليس مسار كل وحدة بادئة مسار استيراد لحزمها فحسب، بل يدل أيضًا على أين ينبغي لأمر go أن يبحث لتنزيلها. فمثلًا، ولتنزيل الوحدة golang.org/x/tools، يستشير أمر go المستودع الذي يشير إليه https://golang.org/x/tools.

أما مسار الاستيراد فهو نصّ يُستعمل لاستيراد حزمة. ومسار استيراد الحزمة هو مسار وحدتها مضافًا إليه مجلدها الفرعي داخل الوحدة. فمثلًا، الوحدة github.com/google/go-cmp تحتوي حزمة في المجلد cmp/، ومسار استيراد تلك الحزمة هو github.com/google/go-cmp/cmp. أما حزم المكتبة القياسية فلا تملك بادئة مسار وحدة.