أنواع البيانات
Data Types
مفهوم
~18 دقيقة
أنواع البيانات — Data Types
Go لغة ذات أنواع ثابتة (statically typed) — كل متغير له نوع محدد لا يتغير. هذا يجعل الكود أكثر أماناً وأسرع في التنفيذ.
الأنواع الأساسية
الأعداد الصحيحة (Integers)
| النوع | الحجم | المدى |
|---|---|---|
int8 | 8 بت | -128 إلى 127 |
int16 | 16 بت | -32,768 إلى 32,767 |
int32 | 32 بت | ±2 مليار |
int64 | 64 بت | ±9.2 كوينتيليون |
int | 32/64 بت | حسب النظام |
uint | 32/64 بت | أعداد موجبة فقط |
byte | 8 بت | اسم مستعار لـ uint8 |
في معظم الحالات، استخدم int وخلاص — Go يختار الحجم المناسب.
الأعداد العشرية (Floats)
| النوع | الدقة |
|---|---|
float32 | ~7 خانات عشرية |
float64 | ~15 خانة عشرية (الافتراضي) |
النصوص (Strings)
النصوص في Go هي غير قابلة للتغيير (immutable) ومُشفّرة بـ UTF-8 — يعني تدعم العربي بشكل ممتاز!
القيم المنطقية (Booleans)
bool — إما true أو false.
main.go
Output:
النصوص بالتفصيل (Strings)
النصوص في Go تدعم UTF-8 أصلاً — العربي يعمل بدون أي إعداد خاص:
main.go
Output:
تحويل الأنواع (Type Conversion)
Go لا تُحوّل الأنواع ضمنياً — يجب أن تكون صريحاً. هذا تصميم مقصود لمنع الأخطاء:
var x int = 42
var y float64 = float64(x) // ✅ تحويل صريح
var z int = int(y) // ✅ تحويل صريح
var a int32 = 100
var b int64 = int64(a) // ✅ حتى بين أنواع int المختلفة
main.go
Output:
Rune — الأحرف
في Go، الحرف الواحد يُمثَّل بـ rune (اسم مستعار لـ int32). هذا مهم خاصة مع العربي:
main.go
Output:
القيم الصفرية (Zero Values)
كل نوع في Go له قيمة افتراضية:
| النوع | القيمة الصفرية |
|---|---|
int, float64 | 0 |
string | "" (نص فارغ) |
bool | false |
pointer | nil |
تحدي — Challenge
استخدم fmt.Printf أو Sprintf مع التنسيق المناسب