القيمة القصوى لنوع 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؟