أمثلة صب جولانج

Amthlt Sb Jwlanj



تُعرف عملية تغيير نوع بيانات القيمة من نوع إلى آخر باسم تحويل النوع ، ويُعرف أحيانًا باسم تحويل النوع. يتم إنجاز صب النوع في Go باستخدام تحويلات النوع الصريح. يدعم Go الكتابة القوية. وبالتالي ، عند التحويل بين الأنواع ، يجب أن نشير صراحة إلى هدفنا. هذا يعزز أمان الكتابة ويقلل من احتمال حدوث أخطاء في الكتابة. في هذه المقالة الكتابية ، سوف نستكشف طريقة الإرسال بأنواع مختلفة في Go.

مثال 1: صب النوع الأساسي لـ Golang

لنبدأ بمثال الصب المباشر والأساسي في Go لأننا نطلب التلبيس لتعديل نوع المتغير ، في أي مكان.

طَرد رئيسي
يستورد (
'FMT'
)
func رئيسي () {
كان x int = 31
و : = تعويم 64 ( x )
FMT . Println ( و )
}

هنا ، نبدأ بالدالة الرئيسية بالتصريح عن متغير اسمه 'x' من النوع 'int' وتعيينه بقيمة 31. ثم يتم الإعلان عن المتغير 'y' باستخدام عامل التخصيص المختزل ': ='. يتم تحديد نوع 'y' تلقائيًا من التعبير الموجود على الجانب الأيمن والذي ينتج عن تحويل 'x' إلى 'float64'. لذلك ، في هذا البرنامج ، يتم تحويل قيمة 'x' إلى 'float64' وتعيينها إلى 'y'.







يتم عرض النتائج التي تم استردادها من الصب الأساسي في Go على النحو التالي:





مثال 2: صب النوع الضمني لـ Golang

لا يُسمح بصب النوع الضمني بين الأنواع المختلفة. يفرض Go كتابة قوية مما يعني أنه لا يمكننا تعيين أو استخدام قيمة من نوع واحد كنوع آخر بدون تحويل صريح. في ما يلي ، نحاول إجراء الصب الضمني الذي يولد الاستثناء بواسطة Go:





طَرد رئيسي
يستورد 'FMT'
func رئيسي () {
كان عدد صحيح int = 9 . 08
FMT . برنتف ( 'العدد الصحيح هو٪ g' و عدد صحيح )
}

إليك الكود الذي يبدأ بالدالة main () حيث يتم التصريح عن متغير 'عدد صحيح' بنوع 'int'. القيمة التي يتم تعيينها لمتغير 'عدد صحيح' هي 9.08 وهو رقم ذو فاصلة عائمة. نظرًا لأننا نحاول تعيين قيمة فاصلة عائمة مباشرةً إلى متغير عدد صحيح ، فإنه ينتج عنه خطأ عدم تطابق في النوع. بعد ذلك ، نستخدم وظيفة 'printf' من الحزمة 'fmt' لطباعة قيمة متغير 'عدد صحيح' باستخدام محدد التنسيق '٪ g'.

كما هو متوقع ، فإن صب النوع الضمني غير مقبول في Golang. ينتج عن صب النوع الضمني السابق الخطأ التالي:



مثال 3: صب نوع صريح لـ Golang

يمكّننا تحويل النوع الصريح من تحويل القيم بأمان بين الأنواع المتوافقة مع الإشارة صراحة إلى النية. إنه يضمن أننا على دراية بتحويل النوع ويساعد على منع أخطاء النوع العرضي. ضع في اعتبارك الإرسال الصريح التالي:

طَرد رئيسي
يستورد 'FMT'

func رئيسي () {
كان تعويم تعويم 32 = 6 . 75
كان إنتفال int = int ( تعويم )
FMT . برنتف ( 'قيمة Float هي٪ g ' و تعويم )
FMT . برنتف ( 'قيمة عدد صحيح٪ d' و إنتفال )
}

هنا ، يتم إنشاء متغير 'floatVal' من النوع 'float32' ، ويتم تعيين القيمة '6.75' له. بعد ذلك ، يتم التصريح عن متغير 'intVal' بنوع 'int'. لتعيين قيمة floatVal إلى intVal ، يتم استخدام تحويل النوع. لتحويل floatVal إلى قيمة عددية ، يتم استخدام الدالة 'int' مع إدخال floatVal. بعد ذلك ، يقوم 'fmt.Printf (' Float Value٪ g \ n '، floatVal)' بطباعة قيمة floatVal باستخدام محدد التنسيق٪ g المناسب لطباعة قيم الفاصلة العائمة. بينما يقوم سطر الكود 'fmt.Printf (' قيمة عدد صحيح٪ d '، intVal)' بطباعة قيمة intVal باستخدام محدد التنسيق٪ d المناسب لطباعة قيم الأعداد الصحيحة.

يولد الإخراج التالي القيم لكل من floatVal و intVal بعد تحويله:

مثال 4: نوع Golang Casting للحصول على المتوسط

بعد ذلك ، نقوم بإجراء عملية الصب للحصول على متوسط ​​العدد من القيم المعطاة. لنستعرض شفرة المصدر الواردة في ما يلي:

طَرد رئيسي
يستورد 'FMT'
func رئيسي () {
كان المجموع int = 900
كان رقمي int = عشرين
كان متوسط تعويم 32
متوسط = تعويم 32 ( المجموع ) / تعويم 32 ( رقمي )
FMT . برنتف ( 'المتوسط ​​=٪ f ' و متوسط )
}

هنا ، نعلن في البداية عن ثلاثة متغيرات. 'total' هو متغير عدد صحيح تمت تهيئته بقيمة 900. 'MyNumber' هو متغير عدد صحيح تمت تهيئته بقيمة 20. ثم يتم تخزين المتوسط ​​المحسوب في متغير float32 'متوسط'. ثم يتم إعطاء صيغة المتوسط ​​لإجراء الحساب. للتأكد من أن القسمة تتم كقسم فاصلة عائمة ، يتم تحويل قيم 'إجمالي' و 'MyNumber' إلى float32 باستخدام تحويل النوع. يتم تعيين المتوسط ​​المحسوب إلى المتغير 'المتوسط'. أخيرًا ، تحدد سلسلة التنسيق '٪ f \ n' المستخدمة في وظيفة 'printf' أنه يجب طباعة قيمة عائمة ، متبوعة بحرف سطر جديد.

يتم جلب القيمة الناتجة كمتوسط ​​بعد تضمين نوع الصب في الكود السابق:

مثال 5: Golang Int و String Type Casting

بالإضافة إلى ذلك ، يوفر Go أيضًا إمكانية الإرسال بين أنواع Int و String. يمكننا تحقيق ذلك باستخدام وظيفة الحزمة strconv.

طَرد رئيسي
يستورد (
'FMT'
'strconv'
)
func رئيسي () {
كان شارع خيط = '1999'
في و _ : = ستركونف . جَرَّار ( س )
FMT . Println ( في )
كان عدد صحيح int = 1999
toStr : = ستركونف . غرق ( عدد صحيح )

FMT . Println ( toStr )
}

إليك الكود الذي يبدأ بإعلان متغيرين. 'str' ​​هو متغير سلسلة تمت تهيئته بقيمة '1999' و 'عدد صحيح' هو متغير عدد صحيح تمت تهيئته بقيمة '1999'. بعد ذلك ، يتم استخدام الوظيفة “strconv.Atoi ()” لتحويل سلسلة “str” إلى قيمة عدد صحيح. تمثل القيمة التي تم إرجاعها 'v' العدد الصحيح المحول ، ويتم استخدام المعرف '_' الفارغ لتجاهل أي خطأ محتمل يتم إرجاعه بواسطة Atoi ().

بعد ذلك ، يتم استخدام الدالة strconv.Itoa () لتحويل العدد الصحيح إلى قيمة سلسلة. تمثل القيمة التي تم إرجاعها 'toStr' السلسلة المحولة.

يعرض الإخراج التحويل من سلسلة '1999' إلى عدد صحيح والعودة إلى سلسلة تنتج القيمة الأصلية لـ '1999':

مثال 6: صب نوع Golang بين السلسلة والبايت

علاوة على ذلك ، يمكن أيضًا إجراء عملية الصب في Go في أنواع السلسلة والبايت. توضح الرموز التالية التحويل بين السلاسل وشرائح البايت:

طَرد رئيسي
يستورد (
'FMT'
)
func رئيسي () {
كان سر خيط = 'مرحبًا يا من هناك'
كان ب 1 [] بايت = [] بايت ( myStr )
FMT . Println ( ب 1 )
إلى سلسلة : = خيط ( ب 1 )
FMT . Println ( إلى سلسلة )
}

هنا ، يتم تعريف المتغيرات أولاً باسم 'myStr' و 'b1' والتي يتم تهيئتها بقيم معينة. بعد ذلك ، يقوم التعبير [] byte (myStr) بتحويل سلسلة 'myStr' إلى شريحة بايت باستخدام تحويل النوع. يقوم بتعيين شريحة البايت الناتجة إلى المتغير 'b1'. بعد ذلك ، يحول التعبير 'string (b1)' شريحة البايت b1 مرة أخرى إلى سلسلة باستخدام تحويل النوع. يقوم بتعيين السلسلة الناتجة إلى المتغير 'toString'.

يُظهر الإخراج التحويل بين سلسلة 'Hey There' وتمثيل شريحة البايت المقابلة لها في ما يلي:

مثال 7: صب نوع Golang للحصول على الجذر التربيعي

الآن ، نجري عملية الصب في Go لإيجاد نتائج الجذر التربيعي. يتم وضع الكود على النحو التالي:

طَرد رئيسي
يستورد (
'FMT'
'رياضيات'
)
func رئيسي () {
كان ن int = 177
كان SqrtN تعويم 64
SqrtN = الرياضيات . مربع ( تعويم 64 ( ن ))
FMT . برنتف ( 'الجذر التربيعي لـ٪ d هو٪ .2f ' و ن و SqrtN )
}

هنا ، يتم التصريح عن المتغير 'n' باعتباره int ويخصص قيمة '144'. يتم تعريف المتغير 'SqrtN' على أنه عائم 64 ويخزن الجذر التربيعي المحسوب لـ 'n'. بعد ذلك ، يتم نشر الدالة math.Sqrt () لحساب الجذر التربيعي لـ 'n'. نظرًا لأن math.Sqrt () تتوقع وسيطة float64 ، ويتم تحويل قيمة 'n' إلى float64 باستخدام float64 (n). بعد ذلك ، 'الجذر التربيعي لـ٪ d هو٪ .2f \ n' يستدعي سلسلة تنسيق في وظيفة 'printf' التي تحدد قيمة عدد صحيح (٪ d) وقيمة فاصلة عائمة (٪ .2f). يضمن محدد الدقة '.2' في '٪ .2f' طباعة الجذر التربيعي بمنزلتين عشريتين.

يتم جلب المخرجات التالية والتي تشير إلى الجذر التربيعي للقيمة المحددة:

خاتمة

تتم مناقشة الصب في Go بأمثلة مميزة قابلة للتنفيذ جميعًا. ضع في اعتبارك أنه في Go ، يعد التلبيس واضحًا مما يفرض كتابة قوية ويعزز وضوح الكود وموثوقيته.