تحويلات الأنواع في Go
التحويلات الصريحة، والأسماء المستعارة للأنواع، والأنواع المعرّفة
تحويلات الأنواع في Go درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
لماذا التحويلات الصريحة؟
لا تجري Go أي تحويل ضمني بين الأنواع. يمنع ذلك الأخطاء الدقيقة التي قد يحدث فيها تجاوز سعة عدد صحيح صغير بصمت عند تحويله إلى نوع أكبر، أو يفقد عدد عشري دقته.
- يجب كتابة التحويلات صراحةً:
T(value) - يكتشف المترجم عدم تطابق الأنواع وقت الترجمة
- يجعل ذلك شيفرة Go متوقعة وآمنة
التحويلات الرقمية
حوّل بين الأنواع الرقمية باستخدام النوع الهدف على هيئة استدعاء دالة:
package main
func main() {
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
_ = u
}خطر الاقتطاع
يؤدي التحويل من نوع أكبر إلى نوع أصغر إلى اقتطاع القيمة. لا يُصدر أي خطأ — لذا عليك توخي الحذر:
package main
func main() {
big := int64(300)
small := int8(big) // 300 % 256 = 44 — silent truncation!
_ = small
}التحويل بين string و[]byte
يؤدي التحويل بين string و[]byte إلى نسخ البيانات:
package main
func main() {
s := "hello"
b := []byte(s) // string to byte slice
b[0] = 'H'
s2 := string(b) // byte slice to string
_ = s2
}string و[]rune
للتعامل مع الأحرف بطريقة آمنة مع Unicode، حوّل إلى []rune:
package main
func main() {
s := "Merhaba"
runes := []rune(s)
_ = len(runes) // character count, not byte count
}حزمة strconv
للتحويل بين السلاسل النصية والأرقام، استخدم حزمة strconv:
import "strconv"
func main() {
n, err := strconv.Atoi("42") // string -> int
s := strconv.Itoa(123) // int -> string
_ = n; _ = err; _ = s
}strconv.ParseFloat وFormatFloat
حلّل السلاسل النصية ذات الفاصلة العائمة ونسّقها بأمان:
import "strconv"
func main() {
f, err := strconv.ParseFloat("3.14", 64)
if err != nil { return }
s := strconv.FormatFloat(f, 'f', 2, 64) // "3.14"
_ = s
}الأسماء المستعارة للأنواع مقابل الأنواع المعرّفة
تميّز Go بين الأسماء المستعارة للأنواع والأنواع المعرّفة:
type Celsius float64— نوع معرّف جديد؛ يتطلب تحويلًا صريحًا منfloat64وإليهtype Celsius = float64— اسم مستعار؛ متوافق معfloat64ويمكن استخدامه بدلًا منه
مثال على نوع معرّف
تحسّن الأنواع المعرّفة وضوح API وتمنع الخلط غير المقصود بينها:
type Celsius float64
type Fahrenheit float64
func CtoF(c Celsius) Fahrenheit {
return Fahrenheit(c*9/5 + 32)
}
func main() {
boiling := Celsius(100)
_ = CtoF(boiling)
}تحويلات الواجهات
يمكن تحويل أي قيمة إلى نوع واجهة تستوفيه. وتتطلب إعادة التحويل استخدام تأكيد النوع:
var i interface{} = "hello"
s, ok := i.(string) // type assertion
if ok {
_ = s // safe to use
}تحقق سريع
ما الدالة التي تحوّل سلسلة نصية إلى int في Go؟
مراجعة: تحويلات الأنواع
أهم النقاط المتعلقة بتحويلات الأنواع في Go:
- لا يجري Go أي تحويل ضمني — استخدم الصياغة
T(value) - قد تقتطع التحويلات العددية جزءًا من القيمة — كن صريحًا بشأن المخاطر
- تنسخ
[]byte(s)وstring(b)البيانات - استخدم
strconv.Atoiوstrconv.Itoaلتحويلات السلاسل النصية والأعداد - تحتاج الأنواع المعرّفة إلى تحويلات صريحة، أما الأسماء المستعارة فلا تحتاج إليها
الدورة التالية: التحكم في التدفق باستخدام if وfor وswitch.
تعلم Go مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «تحويلات الأنواع في Go» مجاني؟
نعم — نص درس «تحويلات الأنواع في Go» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «تحويلات الأنواع في Go»؟
التحويلات الصريحة، والأسماء المستعارة للأنواع، والأنواع المعرّفة تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تحويلات الأنواع في Go»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعريف المتغيرات في Go
- الأنواع المضمّنة في Go
- الثوابت وiota
- تحويلات الأنواع في Go