الانتقال إلى المحتوى الرئيسي
الوحدة 1 · الدرس 1 من 51/50 في الدورة~10 min
دروس الوحدة (1/5)

المتغيرات والأنواع

في Go، كل متغير له نوع ثابت معروف للمترجم: مرة واحدة تم الإعلان عن أن المتغير لا يمكنه تغيير النوع. هذه الصلابة — مختلفة جدا من JavaScript أو Python — هو الثمن الذي تدفعه للحصول على وقت الترجمة أخطاء بدلاً من أخطاء وقت التشغيل، والثنائيات الصغيرة، والتي يمكن التنبؤ بها الأداء.

شكلين من الإعلان

var بنوع صريح

Go
var name string = "Ada"
var age int = 36
var active bool

عندما تحذف القيمة (كما في var active bool) يتلقى المتغير قيمة القيمة صفر من نوعها — سنعود إليها في الدرس التالي.

إعلان قصير :=

داخل إحدى الوظائف، يمكنك استخدام :=، الذي يستنتج النوع من التعبير على اليمين. هذا هو الشكل الاصطلاحي والذي ستستخدمه 90% من الوقت:

Go
name := "Ada"   // string
age := 36        // int
pi := 3.14       // float64
active := true   // bool

الأنواع الأساسية التي ستقابلها على الفور

اكتبمثالملاحظات
محمي_INLINE_12محمي_INLINE_13الحجم يعتمد على وحدة المعالجة المركزية (32 أو 64 بت)
محمي_INLINE_14محمي_INLINE_15الافتراضي للقيم العشرية
محمي_INLINE_16محمي_INLINE_17UTF-8، غير قابل للتغيير
محمي_INLINE_18محمي_INLINE_19, محمي_INLINE_20لا يوجد "حقيقي"، فقط بول نقي
محمي_INLINE_21محمي_INLINE_22الاسم المستعار int32، يمثل نقطة رمز Unicode
محمي_INLINE_24محمي_INLINE_25الاسم المستعار uint8

هناك أيضًا int8/16/32/64 وuint8/16/32/64 وfloat32 وcomplex64/128 عندما تحتاج إلى أحجام دقيقة (التحليل الثنائي، التشغيل المتداخل، وما إلى ذلك).

تصريحات متعددة

يمكنك الإعلان عن عدة متغيرات باستخدام كتلة var أو جمع :=:

Go
var (
    name   string = "Ada"
    age    int    = 36
    active bool
)

x, y := 10, 20
a, b, c := "a", 2, true   // different types: no problem

تم الإعلان عن المتغيرات ولكن لم يتم استخدامها

Go صارم: المتغير ** المُعلن عنه ولم يتم استخدامه أبدًا ** هو تجميع خطأ وليس تحذير الأمر نفسه ينطبق على imports غير المستخدمة.

Go
func main() {
    x := 42
    // error: x declared and not used
}

لإسكات القاعدة مؤقتًا، يمكنك استخدام _ (معرف فارغ):

Go
_ = x

دورك

تمرين#go.m1.l1.e1
المحاولات: 0جارٍ التحميل…

استخدم var للإعلان عن اسم متغير من النوع سلسلة بقيمة "Ada" وطباعته.

جارٍ تحميل المحرر…
إظهار التلميح

النموذج الطويل هو `var <name> <type> = <value>`.

الحل متاح بعد 3 من المحاولات

تمرين#go.m1.l1.e2
المحاولات: 0جارٍ التحميل…

في سطر واحد، استخدم := لتعيين 36 للعمر و"Roma" للمدينة، ثم قم بطباعة كليهما.

جارٍ تحميل المحرر…
إظهار التلميح

يمكنك تعيين متغيرات متعددة في وقت واحد: `a, b := 1, "due"`.

الحل متاح بعد 3 من المحاولات

Quiz#go.m1.l1.e3
جاهز

أي من هذه الإعلانات ينتج عنه خطأ في الترجمة إذا تم وضعه خارج الوظيفة؟

Go
// (a)
var name string = "Ada"

// (b)
age := 36

// (c)
const PI = 3.14
خيارات الإجابة

خلاصة

  • نوع ثابت، يتم استنتاجه تلقائيًا بواسطة := أو يتم الإعلان عنه بواسطة var.
  • := فقط داخل الوظائف؛ على مستوى الحزمة فقط var/const.
  • المتغيرات والواردات غير المستخدمة = خطأ في الترجمة: استخدم _ لإسكاتها.
  • int/float64/string/bool يغطي 90% من الحالات اليومية.