دروس الوحدة (1/5)
المتغيرات والأنواع
في Go، كل متغير له نوع ثابت معروف للمترجم: مرة واحدة تم الإعلان عن أن المتغير لا يمكنه تغيير النوع. هذه الصلابة — مختلفة جدا من JavaScript أو Python — هو الثمن الذي تدفعه للحصول على وقت الترجمة أخطاء بدلاً من أخطاء وقت التشغيل، والثنائيات الصغيرة، والتي يمكن التنبؤ بها الأداء.
شكلين من الإعلان
var بنوع صريح
var name string = "Ada"
var age int = 36
var active boolعندما تحذف القيمة (كما في var active bool) يتلقى المتغير قيمة
القيمة صفر من نوعها — سنعود إليها في الدرس التالي.
إعلان قصير :=
داخل إحدى الوظائف، يمكنك استخدام :=، الذي يستنتج النوع من
التعبير على اليمين. هذا هو الشكل الاصطلاحي والذي ستستخدمه
90% من الوقت:
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_17 | UTF-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 أو جمع :=:
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 غير المستخدمة.
func main() {
x := 42
// error: x declared and not used
}لإسكات القاعدة مؤقتًا، يمكنك استخدام _ (معرف فارغ):
_ = xدورك
استخدم var للإعلان عن اسم متغير من النوع سلسلة بقيمة "Ada" وطباعته.
إظهار التلميح
النموذج الطويل هو `var <name> <type> = <value>`.
الحل متاح بعد 3 من المحاولات
في سطر واحد، استخدم := لتعيين 36 للعمر و"Roma" للمدينة، ثم قم بطباعة كليهما.
إظهار التلميح
يمكنك تعيين متغيرات متعددة في وقت واحد: `a, b := 1, "due"`.
الحل متاح بعد 3 من المحاولات
أي من هذه الإعلانات ينتج عنه خطأ في الترجمة إذا تم وضعه خارج الوظيفة؟
// (a)
var name string = "Ada"
// (b)
age := 36
// (c)
const PI = 3.14خلاصة
- نوع ثابت، يتم استنتاجه تلقائيًا بواسطة
:=أو يتم الإعلان عنه بواسطةvar. :=فقط داخل الوظائف؛ على مستوى الحزمة فقطvar/const.- المتغيرات والواردات غير المستخدمة = خطأ في الترجمة: استخدم
_لإسكاتها. int/float64/string/boolيغطي 90% من الحالات اليومية.