Avatar ·

القيمة القصوى لنوع int في Go: كيف تحصل عليها وتستخدمها؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Go وواجهت موقفاً غير مفهوم. أكتب برنامجاً بسيطاً لحساب المضروب (factorial)، وأحتاج إلى معرفة القيمة القصوى التي يمكن لنوع `int` تخزينها. في لغات أخرى (مثل C++ أو Java)، اعتدت على وجود ثوابت مثل `INT_MAX` أو `Integer.MAX_VALUE`. أما في Go فلا أجد ما يماثلها. حاولت القيام بذلك: ```go package main import "fmt" func main() { var i int = 2147483647 // ظننت أن هذه هي القيمة القصوى لـ int fmt.Println(i) i = i + 1 fmt.Println(i) // توقعت حدوث خطأ، لكنني حصلت على رقم سالب } ``` لدهشتي، تم تجميع البرنامج وتشغيله. ولكن عند overflow حصلت على قيمة سالبة، وليس خطأ في compile أو runtime. هذا أربكني. الأسئلة: 1. كيف أعرف القيمة القصوى لـ `int` في Go؟ 2. لماذا لا يحدث خطأ عند overflow؟ 3. هل تعتمد القيمة القصوى على architecture (32-bit vs 64-bit)؟ 4. هل هناك طريقة للتحقق بأمان من overflow؟