ستقدّم هذه المقالة الكلمات المفتاحية والمعرّفات في Go.
الكلمات المفتاحية
الكلمات المفتاحية هي كلمات خاصة تساعد المصرِّفات على فهم شيفرة المستخدم وتحليلها.
حتى الآن (Go 1.25)، لا تمتلك Go سوى 25 كلمة مفتاحية:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
يمكن تصنيفها إلى أربع مجموعات:
- تُستخدم
constوfuncوimportوpackageوtypeوvarلتعريف جميع أنواع عناصر الشيفرة في برامج Go. - تُستخدم
chanوinterfaceوmapوstructكأجزاء في بعض تسميات الأنواع المركّبة. - تُستخدم
breakوcaseوcontinueوdefaultوelseوfallthroughوforوgotoوifوrangeوreturnوselectوswitchللتحكم في تدفق الشيفرة. deferوgoهما أيضًا من الكلمات المفتاحية للتحكم في التدفق، لكن بطريقتين خاصتين أخريين. فهما يعدّلان استدعاءات الدوال، وهو ما سنتحدث عنه في هذه المقالة.
ستُشرح هذه الكلمات المفتاحية بالتفصيل في مقالات أخرى.
المعرّفات
المعرّف هو رمز يجب أن يتكوّن من حروف Unicode وأرقام Unicode و_ (الشرطة السفلية)، وأن يبدأ بحرف Unicode أو _. هنا،
- حروف Unicode تعني المحارف المعرّفة في فئات الحروف Lu وLl وLt وLm وLo.
- أرقام Unicode تعني المحارف المعرّفة في فئة الأرقام Nd من معيار Unicode.
لا يمكن استخدام الكلمات المفتاحية كمعرّفات.
المعرّف _ معرّف خاص، ويُسمّى المعرّف الفارغ.
سنتعلّم لاحقًا أن جميع أسماء الأنواع والمتغيرات والثوابت والتسميات وأسماء الحزم وأسماء استيراد الحزم يجب أن تكون معرّفات.
يُسمّى المعرّف الذي يبدأ بـحرف Unicode كبير معرّفًا مُصدَّرًا (exported identifier). ويمكن تفسير كلمة «مُصدَّر» بأنها عام (public) في العديد من اللغات الأخرى. أما المعرّفات التي لا تبدأ بحرف Unicode كبير فتُسمّى معرّفات غير مُصدَّرة (non-exported identifiers). ويمكن تفسير كلمة «غير مُصدَّر» بأنها خاص (private) في العديد من اللغات الأخرى. حاليًا (Go 1.25)، تُعتبر المحارف الشرقية حروفًا غير مُصدَّرة. وأحيانًا، تُسمّى المعرّفات غير المُصدَّرة أيضًا المعرّفات غير المُصدَّرة (unexported identifiers).
فيما يلي بعض المعرّفات المُصدَّرة الصحيحة:
Player_9
DoSomething
VERSION
Ĝo
Π
فيما يلي بعض المعرّفات غير المُصدَّرة الصحيحة:
_
_status
memStat
book
π
一个类型
변수
エラー
وهذه بعض الرموز التي لا يجوز استخدامها كمعرّفات:
// يبدأ برقم Unicode.
123
3apples
// يحتوي على محارف Unicode لا
// تحقق المتطلبات.
a.b
*ptr
$name
a@b.c
// هذه كلمات مفتاحية.
type
range