Avatar ·

اتفاقيات تسمية الثوابت في Go: CamelCase، ALL_CAPS أم شيء آخر؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Go بعد Python وC#، وأنا مرتبك قليلاً بشأن اتفاقيات تسمية الثوابت. في Python نستخدم عادةً `ALL_CAPS` للثوابت: `MAX_CONNECTIONS = 100`. في C# من المعتاد استخدام `PascalCase`. أما في Go فأرى أكواداً مختلفة في مشاريع مختلفة. على سبيل المثال، في المكتبة القياسية لـ Go صادفت هذه الأمثلة: ```go // في حزمة http const ( MethodGet = "GET" MethodPost = "POST" ) // في حزمة os const ( O_RDONLY = 0x0 O_WRONLY = 0x1 ) ``` المثال الأول يستخدم CamelCase (`MethodGet`)، والثاني يستخدم snake_case بأحرف كبيرة (`O_RDONLY`). عندما سألت زميلاً، قال إنه في Go يجب استخدام `CamelCase` للثوابت المُصَدَّرة و `lowerCamelCase` للثوابت غير المُصَدَّرة. ولكن لماذا إذن تستخدم `os` `O_RDONLY`؟ إنها ثابت مُصَدَّر! لقد كتبت الكود الخاص بي هكذا: ```go package config const MAX_RETRIES = 3 const DEFAULT_TIMEOUT_SECONDS = 30 const DATABASE_URL = "local